使用CDM将MySQL数据迁移至GaussDB(DWS)集群
本入门提供通过云数据迁移服务CDM将MySQL数据批量迁移到GaussDB(DWS)集群的指导。
本入门的基本内容如下所示:
场景描述
迁移前数据检查
- 连接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:
- 分析需要迁移的数据库名及编码、待迁移的表名、表属性。
例如,查询出待迁移的MySQL目标库为test01、test02以及数据库编码。其中test01库里包括 orders、persons、persons_b三张表和一张视图persons_beijing,test02库里包括一张表persons_c。
- 查询数据库名。
1
show databases;
- 查询数据库编码。
1 2
use <databasename>; status;
图2 查询数据库编码1图3 查询数据库编码2 - 查询库表。
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 查询库表 - 查看各个表的属性,以备迁移后对比。
1 2
use <databasename>; desc <table name>;
图6 查看表属性
- 查询数据库名。
创建GaussDB(DWS)集群
- 参见创建集群进行创建,区域可选择“华北-北京四”。
确保GaussDB(DWS)集群与CDM集群在同一区域,同一个VPC下。
- 参见使用gsql客户端连接集群连接到集群。
- 创建迁移前数据检查的目标数据库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集群
- 登录华为云控制台。
- 选择“迁移 > 云数据迁移 CDM”进入CDM管理控制台。
- 单击“购买云数据迁移服务”,按以下参数填写。
表2 CDM集群参数 参数名
取值
当前区域
华北-北京四(与DWS选择在同一区域)
可用区
可用区1(如果资源售罄则选其他可用区)
名称
CDM-demo
实例类型
cdm.large(如售罄请选择其他规格)
虚拟私有云
demo-vpc(与DWS选择在同一个VPC)
子网
subnet-f377(10.1.0.0/24)(示例)
安全组
-
企业项目
default
- 单击“立即购买”,核对参数无误,单击“提交”。
- 回到CDM管理控制台的“集群管理”页面,等待约5分钟,集群创建成功后,单击集群操作列的“绑定弹性IP”。
- 勾选可用的弹性IP,单击“确认”。如果没有弹性IP,需要跳转到弹性IP界面,购买弹性IP。
创建连接
- 初次创建MySQL连接,需要上传驱动。
- 访问MySQL驱动,选择“5.1.48”版本下载。
图7 下载驱动
- 下载到本地,解压后,获取mysql-connector-java-xxx.jar。
- 回到CDM管理控制台的“集群管理”页面,单击集群操作列的“作业管理”,选择“连接管理 > 驱动管理”。
- 单击“MySQL”右侧的“上传”,选择mysql-connector-java-xxx.jar,单击“上传文件”。
- 访问MySQL驱动,选择“5.1.48”版本下载。
- 创建MySQL连接。
- 在CDM管理控制台的“集群管理”页面,单击集群操作列的“作业管理”,选择“连接管理 > 新建连接”。
- 连接器类型勾选“MySQL”,单击“下一步”。(如果是云上RDS,则勾选“云数据库 MySQL”。)
- 按表3填写连接信息,填写后单击“测试”,测试成功后,单击“保存”。
- 创建DWS连接。
- 在CDM管理控制台的“集群管理”页面,单击集群操作列的“作业管理”,选择“连接管理 > 新建连接”。
- 连接器类型勾选“数据仓库服务 (DWS)”,单击“下一步”。
- 按表4填写连接信息,填写后单击“测试”,测试成功后,单击“保存”。
表4 DWS连接信息 参数项
取值
名称
DWS-test01
数据库服务器
单击“选择”,从集群列表中选择要连接的DWS集群。
说明:系统会自动刷出同一个区域、同一个VPC下的DWS集群,如果没有,则需要手动填写网络已连通的DWS的访问IP。
端口
8000
数据库名称
test01(参见3确保GaussDB(DWS)已手动创建了对应的数据库)
用户名
dbadmin
密码
dbadmin用户密码
使用Agent
否
- 重复3.a~3.c,创建DWS-test02连接。
新建作业和迁移
- 在CDM管理控制台的“集群管理”页面,单击集群操作列的“作业管理”,选择“整库迁移 > 新建作业”。
- 填写如下参数后,单击“下一步”。
- 作业名称:MySQL-DWS-test01
- 源端作业配置:
- 源连接名称:MySQL
- 目的端作业配置:
- 目的连接名称:DWS-test01
- 自动创表:不存在时创建
- 是否压缩:是
- 存储模式:列模式
- 其他选项:保持默认
图8 作业配置 - 勾选所有表,单击
,单击“下一步”
- 参数保持默认即可,单击“保存并运行”。
- 查看作业运行情况,状态为“Succeeded”,表示迁移成功。
图9 查看作业运行情况
- 重复执行1~5,迁移数据库test02的所有表。
在新建作业时,目标源的DWS库,需选择对应到test02。
迁移后数据一致性验证
- 使用gsql连接DWS的test01集群。
gsql -d test01 -h 数据库主机IP -p 8000 -U dbadmin -W 数据库用户密码 -r;
- 查询test01库的表。
1
select * from pg_tables where schemaname= 'public';
图10 查询test01库的表 - 查询每个表的数据是否齐全,字段是否完整。
1 2
select count(*) from table name; \d+ table name;
图11 查询表字段图12 查询表数据 - 抽样检查,验证表数据是否正确。
1
select * from persons where city = ‘Beijing' order by id_p;
图13 验证表数据 - 重复执行2~4查看其它库和表数据是否正确。