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

使用CDM迁移AnalyticDB for MySQL至GaussDB(DWS)集群

本实践演示如何使用云数据迁移服务CDM将AnalyticDB for MySQL(后面简称ADB)数据迁移到GaussDB(DWS)。

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

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

  1. 迁移前准备
  2. 步骤一:元数据迁移
  1. 步骤二:表数据迁移
  2. 步骤三:数据一致性校验
图1 AnalyticDB for MySQL迁移场景

约束与限制

  • 如果在CDM迁移过程中有DELETE、UPDATE操作,无法保证迁移后的数据一致,需要重新迁移。
  • 整库迁移作业一次只能迁移一个数据库,如果迁移多个数据库需要配置多个迁移作业。
  • 在目标端DWS需要创建待同步的数据库和schema。
  • ADB的库层级对应的是DWS的schema层级。

迁移前准备

  • 需确保源ADB集群、目标GaussDB(DWS)集群与CDM网络互通。本例GaussDB(DWS)和CDM创建在同一个区域、同一个网络私有云和子网下。
  • 迁移用户权限放通。
  • 源端和目标端客户端安装完成。
  • 在源端ADB集群配置“数据安全-白名单设置”,添加CDM集群的IP信息。
  • 已准备表1所列的迁移工具:DSC、DataCheck。
  • DataCheck运行环境满足以下要求:
    • 服务器:Linux或Windows服务器,支持64位操作系统。
    • JRE或JDK:系统已安装JRE 1.8。
    • 网络环境:安装、运行DataCheck工具的服务器,需要与待连接的数据库的网络互通。
表1 迁移ADB准备工具

工具名

描述

工具获取

DSC

配套DWS的语法迁移工具。

获取地址

DataCheck

数据校验工具。

请联系技术支持工程师。

步骤一:元数据迁移

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

    导出方法:在ADB控制台操作,登录数据库后,选择对应数据库,选择“导出 > 整库建表语句”,保存DDL_migration.sql即可。

    由于源语法涉及业务范围的识别,需熟悉业务的DBA进行操作,建议源语法由客户DBA提供。

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

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

  3. 连接GaussDB(DWS),执行以下SQL语句创建目标数据库,本例为migration。

    1
    CREATE DATABASE database_name WITH ENCODING 'UTF-8' DBCOMPATIBILITY 'mysql' TEMPLATE template0;
    

  4. ADB中的数据库的概念相当于GaussDB(DWS)的Schema的概念,因此目的端DWS需要在新创建的数据库中创建对应的Schema。

    先切换到新创建的数据库,再执行以下SQL语句创建Schema。
    1
    CREATE SCHEMA schema_name;
    

  5. 在DWS的SQL编辑器窗口,选择已创建的数据库和Schema,单击“导入”,导入2转换完成的建表语句。

    图5 导入DDL语句

  6. 导入完成后,单击“运行”,执行SQL语句完成建表。
  7. 查看表是否创建成功。

    1
    SELECT table_name FROM information_schema.tables WHERE table_schema = 'migration';
    

步骤二:表数据迁移

  1. 配置CDM的源端连接。

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

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

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

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

    1. 单击“表/文件迁移”标签。该标签下创建的作业为单表数据迁移。
    2. 填写源端和目标端信息。
      图9 表级作业迁移
      • 作业名称:用户自定义便于记忆、区分的任务名称。
      • 源端作业配置
        • 源连接名称:选择已创建MySQL源端连接。
        • 使用SQL语句:否。
        • 模式或表空间:待抽取数据的模式或表空间名称。
        • 表名:要抽取的表名。
        • 其他可选参数一般情况下保持默认即可。
      • 目的端作业配置
        • 目的连接名称:选择已创建的DWS目标端连接。
        • 模式或表空间:选择待写入数据的DWS数据库。
        • 自动创表:只有当源端和目的端都为关系数据库时,才有该参数。
        • 表名:待写入数据的表名,可以手动输入一个不存在表名,CDM会在DWS中自动创建该表。
        • 导入前清空数据:任务启动前,是否清除目的表中数据,用户可根据实际需要选择。
    3. 单击“下一步”,进行字段映射。
      图10 表级迁移表字段映射
      • 如果字段映射顺序不匹配,可通过拖拽字段调整。
      • CDM的表达式已经预置常用字符串、日期、数值等类型的字段内容转换,详细请参见字段转换
    4. 确认无误后单击“下一步”。
    5. 在任务配置页面,填写以下参数。
      • 作业失败重试:如果作业执行失败,可选择是否自动重试,这里保持默认值“不重试”。
      • 作业分组:选择作业所属的分组,默认分组为“DEFAULT”。在CDM“作业管理”界面,支持作业分组显示、按组批量启动作业、按分组导出作业等操作。
      • 是否定时执行:如果需要配置作业定时自动执行,可打开此配置。这里保持默认值“否”。
      • 抽取并发数:表示单并发抽取数据,默认为1,可以适当调大取值,建议不要超过4。
      • 是否写入脏数据:表到表的迁移容易出现脏数据,建议配置脏数据归档。
      图11 表级迁移任务配置
    6. 确认无误后,单击“保存并运行”。

      迁移作业开始执行,可以在作业任务栏中查看运行状态,等待作业迁移成功。

      图12 表级迁移成功

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

    1. 单击“整库迁移”页签,单击“新建作业”。
    2. 按照提示输入各项,左侧是源端信息,右侧为目标端信息。
      • 作业名称:用户自定义便于记忆、区分的任务名称。
      • 源端作业配置
        • 源连接名称:选择已创建的MySQL源端连接。
        • 使用SQL语句:否。
        • 模式或表空间:待抽取数据的模式或表空间名称。
        • 表名:要抽取的表名。
        • 其他可选参数一般情况下保持默认即可。
      • 目的端作业配置
        • 目的连接名称:选择已创建的DWS目标端连接。
        • 模式或表空间:选择待写入数据的DWS数据库。
        • 自动创表:只有当源端和目的端都为关系数据库时,才有该参数。
        • 导入前清空数据:任务启动前,是否清除目的表中数据,用户可根据实际需要选择。
      图13 库级迁移作业配置
    3. 填写完毕后单击“下一步”。
    4. 勾选所有表或需迁移数据的表,单击中间右箭头转移到右侧,无误后单击“下一步”。
      图14 选择迁移的表
    5. 填写作业配置参数。
      • 同时执行的子作业个数:表示同时同步数据的表个数,默认为10,建议调到5以下。
      • 抽取并发数:表示单并发抽取数据,默认为1,可以适当调大,建议不要超过4。

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

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

  5. 连接GaussDB(DWS),执行以下SQL查看数据是否迁移成功。

    1
    2
    3
    4
    SELECT 'migration.users',count(1) FROM migration.users UNION ALL
    SELECT 'migration.products',count(1) FROM migration.products UNION ALL
    SELECT 'migration.orders',count(1) FROM migration.orders UNION ALL
    SELECT 'migration.employees',count(1) FROM migration.employees;
    

步骤三:数据一致性校验

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

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

    • Windows环境下

      打开conf文件夹中的dbinfo.properties文件,根据实际需要进行配置。ADB源的配置参考下图:

      图16 配置DataCheck

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

      encryption.bat password

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

    • Linux环境下

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

  3. 执行数据校验。

    Windows环境下

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

      下图为元数据对比的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,读出数据并校验内容是否相同。

相关文档