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

使用CDM迁移MySQL数据至GaussDB(DWS)集群

本入门提供通过云数据迁移服务CDM将MySQL数据批量迁移到GaussDB(DWS)集群的指导。

本入门的基本内容如下所示:

  1. 迁移前数据检查
  2. 创建GaussDB(DWS)集群
  3. 创建CDM集群
  4. 创建连接
  5. 新建作业和迁移
  6. 迁移后数据一致性验证

场景描述

图1 迁移场景

主要包括云上和云下的MySQL数据迁移,支持整库迁移或者单表迁移,本文以云下MySQL的整库迁移为例。

  • 云下MySQL数据迁移:

    CDM通过公网IP访问MySQL数据库,CDM与GaussDB(DWS)在同一个VPC下,CDM分别与MySQL和DWS建立JDBC连接。

  • 云上RDS-MySQL数据迁移:

    RDS、CDM和GaussDB(DWS)均在同一个VPC下,CDM分别与MySQL和DWS建立JDBC连接。如果云上RDS与DWS不在一个VPC,则CDM通过弹性公网IP访问RDS。

迁移前数据检查

  1. 连接MySQL实例,查看MySQL数据库情况。

    mysql -h <host>-P<port>-u <userName>-p--ssl-ca=<caDIR>

    表1 参数说明

    参数

    说明

    <host>

    MySQL数据库连接地址。

    <port>

    数据库端口,默认3306。

    <userName>

    MySQL管理员账号,默认为root。

    <caDIR>

    CA证书路径,该文件需放在执行该命令的路径下。

    出现如下提示时,输入数据库账号对应的密码:

    1
    Enter password:
    

  2. 分析需要迁移的数据库名及编码、待迁移的表名、表属性。

    例如,查询出待迁移的MySQL目标库为test01、test02以及数据库编码。其中test01库里包括 orders、persons、persons_b三张表和一张视图persons_beijing,test02库里包括一张表persons_c。

    1. 查询数据库名。
      1
      show databases;
      

    2. 查询数据库编码。
      1
      2
      use <databasename>; 
      status; 
      
      图2 查询数据库编码1
      图3 查询数据库编码2
    3. 查询库表。
      1
      2
      use <databasename>; 
      show full tables;   
      
      • 由于GaussDB(DWS)数据库对表名大小写不敏感,如果原MySQL数据库中存在大小写混用的表名或者纯大写的表名,例如Table01、TABLE01,需要先修改表名为纯小写后才支持迁移,否则会导致迁移后,GaussDB(DWS)无法识别该表。
      • 建议将MySQL也设置成大小写不敏感模式,修改方法:修改/etc/my.cnf参数lower_case_table_names=1,并重启MySQL服务。
      图4 查询库表
      图5 查询库表
    4. 查看各个表的属性,以备迁移后对比。
      1
      2
      use <databasename>; 
      desc <table name>;
      
      图6 查看表属性

创建GaussDB(DWS)集群

  1. 参见创建集群进行创建,区域可选择“中国-香港”。

    确保GaussDB(DWS)集群与CDM集群在同一区域,同一个VPC下。

  2. 参见使用gsql客户端连接集群连接到集群。
  3. 创建迁移前数据检查的目标数据库test01和test02,确保与原MySQL的数据库同名,数据库编码一致。

    1
    2
    create database test01 with encoding 'UTF-8' dbcompatibility 'mysql' template template0; 
    create database test02 with encoding 'UTF-8' dbcompatibility 'mysql' template template0; 
    

创建CDM集群

  1. 登录华为云控制台。
  2. 选择“迁移 > 云数据迁移 CDM”进入CDM管理控制台。
  3. 单击“购买云数据迁移服务”,按以下参数填写。

    表2 CDM集群参数

    参数名

    取值

    当前区域

    中国-香港(与DWS选择在同一区域)

    可用区

    可用区1(如果资源售罄则选其他可用区)

    名称

    CDM-demo

    实例类型

    cdm.large(如售罄请选择其他规格)

    虚拟私有云

    demo-vpc(与DWS选择在同一个VPC)

    子网

    subnet-f377(10.1.0.0/24)(示例)

    安全组

    -

    企业项目

    default

  4. 单击“立即购买”,核对参数无误,单击“提交”。
  5. 回到CDM管理控制台的“集群管理”页面,等待约5分钟,集群创建成功后,单击集群操作列的“绑定弹性IP”。
  6. 勾选可用的弹性IP,单击“确认”。如果没有弹性IP,需要跳转到弹性IP界面,购买弹性IP。

创建连接

  1. 初次创建MySQL连接,需要上传驱动。

    1. 访问MySQL驱动,选择“5.1.48”版本下载。
      图7 下载驱动
    2. 下载到本地,解压后,获取mysql-connector-java-xxx.jar。
    3. 回到CDM管理控制台的“集群管理”页面,单击集群操作列的“作业管理”,选择“连接管理 > 驱动管理”。
    4. 单击“MySQL”右侧的“上传”,选择mysql-connector-java-xxx.jar,单击“上传文件”。

  2. 创建MySQL连接。

    1. 在CDM管理控制台的“集群管理”页面,单击集群操作列的“作业管理”,选择“连接管理 > 新建连接”。
    2. 连接器类型勾选“MySQL”,单击“下一步”。(如果是云上RDS,则勾选“云数据库 MySQL”。)
    3. 表3填写连接信息,填写后单击“测试”,测试成功后,单击“保存”。

      如测试不通过,请确认CDM是否以公网IP方式连接MySQL数据库,如果是公网IP方式,请参见5绑定公网IP。

      表3 MySQL连接信息

      参数项

      取值

      名称

      MySQL

      数据库服务器

      192.168.1.100(示例,请填写云下MySQL实际的公网IP,要确保MySQL服务器已放开白名单访问)

      端口

      3306

      数据库名称

      test01

      用户名

      root

      密码

      root用户密码

      使用本地API

      使用Agent

  3. 创建DWS连接。

    1. 在CDM管理控制台的“集群管理”页面,单击集群操作列的“作业管理”,选择“连接管理 > 新建连接”。
    2. 连接器类型勾选“数据仓库服务 (DWS)”,单击“下一步”。
    3. 表4填写连接信息,填写后单击“测试”,测试成功后,单击“保存”。
      表4 DWS连接信息

      参数项

      取值

      名称

      DWS-test01

      数据库服务器

      单击“选择”,从集群列表中选择要连接的DWS集群。

      说明:

      系统会自动刷出同一个区域、同一个VPC下的DWS集群,如果没有,则需要手动填写网络已连通的DWS的访问IP。

      端口

      8000

      数据库名称

      test01(参见3确保GaussDB(DWS)已手动创建了对应的数据库)

      用户名

      dbadmin

      密码

      dbadmin用户密码

      使用Agent

    4. 重复3.a~3.c,创建DWS-test02连接。

新建作业和迁移

  1. 在CDM管理控制台的“集群管理”页面,单击集群操作列的“作业管理”,选择“整库迁移 > 新建作业”。
  2. 填写如下参数后,单击“下一步”。

    • 作业名称:MySQL-DWS-test01
    • 源端作业配置:
      • 源连接名称:MySQL
    • 目的端作业配置:
      • 目的连接名称:DWS-test01
      • 自动创表:不存在时创建
      • 是否压缩:是
      • 存储模式:列模式
      • 其他选项:保持默认
    图8 作业配置

  3. 勾选所有表,单击,单击“下一步”
  4. 参数保持默认即可,单击“保存并运行”。
  5. 查看作业运行情况,状态为“Succeeded”,表示迁移成功。

    图9 查看作业运行情况

  6. 重复执行1~5,迁移数据库test02的所有表。

    在新建作业时,目标源的DWS库,需选择对应到test02。

迁移后数据一致性验证

  1. 使用gsql连接DWS的test01集群。

    gsql -d test01 -h 数据库主机IP -p 8000 -U dbadmin -W 数据库用户密码 -r;

  2. 查询test01库的表。

    1
    select * from  pg_tables where schemaname= 'public'; 
    
    图10 查询test01库的表

  3. 查询每个表的数据是否齐全,字段是否完整。

    1
    2
    select count(*) from table name; 
    \d+ table name; 
    
    图11 查询表字段
    图12 查询表数据

  4. 抽样检查,验证表数据是否正确。

    1
    select * from persons where city = Beijing' order by id_p; 
    
    图13 验证表数据

  5. 重复执行2~4查看其它库和表数据是否正确。