文档首页/ 数据仓库服务 GaussDB(DWS)/ 最佳实践/ 数据迁移/ 使用CDM迁移Hologres至GaussDB(DWS)集群
更新时间:2024-11-15 GMT+08:00

使用CDM迁移Hologres至GaussDB(DWS)集群

本实践演示如何使用云数据迁移服务CDM将Hologres数据迁移到GaussDB(DWS)。

云数据迁移(Cloud Data Migration,简称CDM),是一种高效、易用的批量数据迁移服务。了解更多请参见云数据迁移CDM

本实践预计时长90分钟,实践用到的云服务包括虚拟私有云 VPC及子网弹性公网EIP、云数据迁移 CDM数据仓库服务 GaussDB(DWS),基本流程如下:

  1. 迁移前准备
  2. 步骤一:元数据迁移
  1. 步骤二:表数据迁移
  2. 步骤三:表数据校验
图1 迁移Hologres场景图

约束与限制

  • 如果待迁移的表数量较多,建议分批次进行迁移。可以按业务分批,也可以按表的数据量分批。
  • 如果在CDM迁移过程中有DELETE、UPDATE操作,无法保证迁移后的数据一致,需要重新迁移。
  • 表的数据量太大,可以切片迁移。
  • 整库迁移作业一次只能迁移一个数据库,如果迁移多个数据库需要配置多个迁移作业。

迁移前准备

  • 已经购买了GaussDB(DWS)和CDM集群,参见CDM使用指南
  • 需确保源Hologres集群、目标GaussDB(DWS)集群与CDM网络互通。本例GaussDB(DWS)和CDM创建在同一个区域、同一个网络私有云和子网下。
  • 迁移用户权限放通。
  • 源端和目标端客户端安装完成。
  • 已准备表1所列的迁移工具:DSC、DataCheck。
  • DataCheck运行环境满足以下要求:
    • 服务器:Linux或Windows服务器,支持64位操作系统。
    • JRE或JDK:系统已安装JRE 1.8。
    • 网络环境:安装、运行DataCheck工具的服务器,需要与待连接的数据库的网络互通。
表1 迁移Hologres准备工具

工具名

描述

工具获取

DSC

配套DWS的语法迁移工具。

获取地址

DataCheck

数据校验工具。

请联系技术支持工程师。

步骤一:元数据迁移

  1. 在Hologres中,使用以下SQL命令进行用户的角色和权限查询。

    1
    2
    SELECT ROLNAME FROM pg_roles;
    SELECT user_display_name(ROLNAME) FROM pg_roles;
    

  2. 在GaussDB(DWS)中,集群创建成功后,默认情况下未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。默认只有对象所有者或者系统管理员可以查询、修改和销毁对象。根据Hologres的查询出的角色和权限,相应在GaussDB(DWS)中创建对应的角色和权限,并通过以下途径授权用户权限。

    • 使用GRANT将对象的权限授予其他用户。
      1
      2
      GRANT USAGE ON SCHEMA schema TO user;
      GRANT SELECT ON TABLE schema.table To user;
      
    • 使用户继承角色所拥有的对象权限。
      1
      2
      CREATE ROLE role_name WITH CREATEDB PASSWORD '*******';
      GRANT role_name to user;
      

  3. 导出源语法。源语法是客户业务的实现逻辑,从Hologres中导出源语法,再修改为适用于GaussDB(DWS)的语法,可以减少建模的工作量,提升业务迁移的效率。

    执行以下SQL进行全量语法导出。

    1
    SELECT hg_dump_script('schema_name.table_name');
    
    • 由于源语法涉及业务范围的识别,需熟悉业务的DBA进行操作,建议源语法由客户DBA提供。
    • 如果进行批量导出,可以使用UNION ALL将所有待查询表关联,语法格式如下:
      1
      2
      3
      4
      SELECT hg_dump_script('schema_name.table_name')
      UNION ALL
      SELECT hg_dump_script('schema_name.table_name')
      
      
    • 如果执行失败,需要使用如下命令在DB中创建extension,然后再执行上述SQL。
      1
      CREATE EXTENSION hg_toolkit;
      

  4. 连接GaussDB(DWS),执行以下SQL创建数据库,推荐使用MySQL兼容模式建库。

    1
    CREATE DATABASE tldg WITH ENCODING 'UTF-8' TEMPLATE template0 DBCOMPATIBILITY 'MYSQL';
    

  5. 使用DSC工具对DDL语法进行转换。

    1. 解压迁移前准备获取到的DSC工具包。
    2. 将待转换的DDL语法文件放入DSC的input文件夹中。
      图2 input目录
    3. 打开命令行工具,Windows环境下双击runDSC.bat。(Linux环境下运行runDSC.sh。)
    4. 执行以下命令进行语法转换。
      1
      runDSC.bat -S Hologres
      
      图3 DDL语法转换
    5. 可以在output文件夹下查看转换结果。
      图4 DDL转换结果
    6. 连接GaussDB(DWS),执行上一步转换完成的DDL语句,完成建表。

    DSC更多内容请参见DSC工具使用指导

步骤二:表数据迁移

CDM支持表级迁移库级迁移,可根据实际迁移场景进行选择。

  1. 配置CDM的源端连接。由于Hologres的建表语法兼容PostgreSQL,所以配置CDM的连接选择PostgreSQL数据源即可。

    1. 登录CDM管理控制台,单击左侧“集群管理”。
    2. 如果CDM与源端Hologres通过公网连接,需要绑定公网IP,参见绑定EIP
    3. 单击集群名称右边的“作业管理”,进入迁移作业界面。
      图5 CDM集群管理页面
    4. 首次建立作业连接前,需要安装驱动。选择“连接管理 > 驱动管理”,安装PostgreSQL驱动
    5. 驱动安装完成后,在连接管理页面单击“新建连接”,选择“PostgreSQL”,单击“下一步”。
    6. 填写Hologres数据库信息。
      图6 Hologres连接信息
    7. 单击“测试”,测试连通后,单击“保存”。

  2. 配置CDM的目标端连接。

    1. 参见同样方法,选择“作业管理 > 连接管理 > 新建连接”。
    2. 选择“数据仓库服务(DWS)”,单击“下一步”。
    3. 同理,填写DWS的数据库信息。
      图7 DWS连接信息
    4. 单击“测试”,测试连通后,单击“保存”。

  3. 配置并启动表级迁移作业。

    1. 单击“表/文件迁移”标签。该标签下创建的作业为单表数据迁移。
    2. 填写源端和目标端信息。
      图8 表级迁移作业配置
    3. 单击“下一步”,进行字段映射。
      图9 表级迁移表字段映射
    4. 确认无误后单击“下一步”。
    5. 在任务配置页面,“抽取并发数”表示单并发抽取数据,默认为1,可以适当调大取值,建议不要超过4,确认无误后,单击“保存并运行”。
      图10 表级迁移任务配置
      迁移作业开始执行,可以在作业任务栏中查看运行状态,等待作业迁移成功。
      图11 作业运行状态

  4. 配置并启动库级迁移作业。

    1. 单击“整库迁移”页签,单击“新建作业”。
    2. 按照提示输入各项,左侧是源端信息,右侧为目标端信息。填写完毕后单击“下一步”。
      图12 库级迁移作业配置
    3. 勾选所有表或需迁移数据的表,单击中间右箭头转移到右侧,无误后单击“下一步”。
      图13 选择迁移的表
    4. 填写作业配置参数。
      • 同时执行的子作业个数:表示同时同步数据的表个数,默认为10,建议调到5以下。
      • 抽取并发数:表示单并发抽取数据,默认为1,可以适当调大,建议不要超过4。

      核对无误后单击“保存并运行”。

    5. 等待作业迁移完成。单击作业名称,可以看到各表的迁移完成情况。
      图14 库级迁移作业列表
      图15 各表数据迁移情况

步骤三:表数据校验

迁移完成之后,可使用数据校验工具DataCheck校验源端、目标端的数据是否一致。

  1. 下载软件包后,解压DataCheck-*.zip包,进入DataCheck-*目录,即可使用。目录下各文件的使用说明参见表2
  2. 配置工具包。

    • Windows环境下
      打开conf文件夹中的dbinfo.properties文件,根据实际需要进行配置。Holo源的配置参考下图:
      图16 配置DataCheck

      文件中的密码src.passwd和dws.passwd可使用工具,执行以下命令生成密文。

      encryption.bat password

      运行成功后会在本地bin目录下生成加密文件,如下图。

    • Linux环境下

      其他步骤相同。密文生成方法与上文中Window环境下的方法类似,命令为sh encryption.sh [password]

  3. 执行数据校验。

    Windows环境下

    1. 打开check.input文件,将要校验的Schema、数据库、源表、目标端表填入,Row Range可根据需要填写特定范围的数据查询语句。
      • 源端的库名在配置文件中配置后,check.input文件中的源端会默认填写配置文件中的库名,若check.input文件中填入其他库名,以check.input文件中的优先级为高。
      • 校验级别Check Strategy支持high、middle、low三种,若未填写,默认为low。
      • 校验模式Check mode支持statistics,即统计值校验。

      下图为元数据对比的check_input文件。

      图17 check_input
    2. 在bin目录下使用命令datacheck.bat执行校验工具:

    3. 查看已生成的校验结果 check_input_result.xlsx:

      下图为源端元数据与目标端一致的结果。

      下图为源端元数据与目标端不一致的结果。

      统计值校验参考下图。

    Linux环境下

    1. 编辑check_input.xlsx文件并上传,参考Window环境下的第一步。
    2. 使用命令sh datacheck.sh执行校验工具。

    3. 查看校验结果check_input_result.xlsx(校验结果分析与Windows场景相同)。

参考信息

表2 DataCheck目录说明

文件或文件夹

说明

DataCheck

bin

保存校验工具入口脚本。

  • Windows版本:datacheck.bat
  • Linux版本:datacheck.sh

conf

配置文件,进行源数据库和目的数据库的连接配置和日志打印设置。

lib

保存校验工具运行所需的相关jar包。

check_input.xlsx

  • 待校验的表信息,包括Schema名、表名、列名等。
  • 记录用户的校验级别信息和校验规则。已支持3种级别校验,包括high、middle、low,默认为low。

logs

压缩包中不包含该文件,校验工具执行后自动生成,记录工具运行过程日志。

check_input_result.xlsx

压缩包中不包含该文件,执行校验工具后会在check_input.xlsx相同路径下生成校验结果文件。

表3 数据校验工具基本功能介绍

DataCheck工具介绍

  • 支持DWS,MySQL,PostgreSQL数据库的数据校验。
  • 支持通用类型字段校验:数值、时间、字符类型。
  • 支持校验级别设置:包括high、middle、low三种。
  • 支持指定schema、表名、列名进行校验。
  • 支持指定记录的校验范围,默认为校验所有记录。
  • 校验方式涉及count(*)、max、min、sum、avg以及抽样明细校验等方式。
  • 输出校验结果和相关校验明细说明。
表4 数据校验级别说明

校验级别

校验说明

校验相关语法

  • 数据数量校验
  • 条数校验: COUNT(*)

  • 数据数量校验
  • 数值类型校验
  • 条数校验: COUNT(*)
  • 数值校验: MAX, MIN, SUM, AVG

  • 数据数量校验
  • 数值类型校验
  • 日期类型校验
  • 字符类型校验
  • 条数校验: COUNT(*)
  • 数值校验: MAX, MIN, SUM, AVG
  • 日期校验: MAX, MIN
  • 字符校验:order by limit 1000,读出数据并校验内容是否相同。