使用CDM迁移Hologres至GaussDB(DWS)集群
本实践演示如何使用云数据迁移服务CDM将Hologres数据迁移到GaussDB(DWS)。
云数据迁移(Cloud Data Migration,简称CDM),是一种高效、易用的批量数据迁移服务。了解更多请参见云数据迁移CDM。
本实践预计时长90分钟,实践用到的云服务包括虚拟私有云 VPC及子网、弹性公网EIP、云数据迁移 CDM和数据仓库服务 GaussDB(DWS),基本流程如下:
约束与限制
- 如果待迁移的表数量较多,建议分批次进行迁移。可以按业务分批,也可以按表的数据量分批。
- 如果在CDM迁移过程中有DELETE、UPDATE操作,无法保证迁移后的数据一致,需要重新迁移。
- 表的数据量太大,可以切片迁移。
- 整库迁移作业一次只能迁移一个数据库,如果迁移多个数据库需要配置多个迁移作业。
步骤一:元数据迁移
- 在Hologres中,使用以下SQL命令进行用户的角色和权限查询。
1 2
SELECT ROLNAME FROM pg_roles; SELECT user_display_name(ROLNAME) FROM pg_roles;
- 在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;
- 使用GRANT将对象的权限授予其他用户。
- 导出源语法。源语法是客户业务的实现逻辑,从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;
- 连接GaussDB(DWS),执行以下SQL创建数据库,推荐使用MySQL兼容模式建库。
1
CREATE DATABASE tldg WITH ENCODING 'UTF-8' TEMPLATE template0 DBCOMPATIBILITY 'MYSQL';
- 使用DSC工具对DDL语法进行转换。
- 解压迁移前准备获取到的DSC工具包。
- 将待转换的DDL语法文件放入DSC的input文件夹中。
图2 input目录
- 打开命令行工具,Windows环境下双击runDSC.bat。(Linux环境下运行runDSC.sh。)
- 执行以下命令进行语法转换。
1
runDSC.bat -S Hologres
图3 DDL语法转换
- 可以在output文件夹下查看转换结果。
图4 DDL转换结果
- 连接GaussDB(DWS),执行上一步转换完成的DDL语句,完成建表。
DSC更多内容请参见DSC工具使用指导。
步骤二:表数据迁移
- 配置CDM的源端连接。由于Hologres的建表语法兼容PostgreSQL,所以配置CDM的连接选择PostgreSQL数据源即可。
- 登录CDM管理控制台,单击左侧“集群管理”。
- 如果CDM与源端Hologres通过公网连接,需要绑定公网IP,参见绑定EIP。
- 单击集群名称右边的“作业管理”,进入迁移作业界面。
图5 CDM集群管理页面
- 首次建立作业连接前,需要安装驱动。选择“连接管理 > 驱动管理”,安装PostgreSQL驱动。
- 驱动安装完成后,在连接管理页面单击“新建连接”,选择“PostgreSQL”,单击“下一步”。
- 填写Hologres数据库信息。
图6 Hologres连接信息
- 单击“测试”,测试连通后,单击“保存”。
- 配置CDM的目标端连接。
- 参见同样方法,选择“作业管理 > 连接管理 > 新建连接”。
- 选择“数据仓库服务(DWS)”,单击“下一步”。
- 同理,填写DWS的数据库信息。
图7 DWS连接信息
- 单击“测试”,测试连通后,单击“保存”。
- 配置并启动表级迁移作业。
- 单击“表/文件迁移”标签。该标签下创建的作业为单表数据迁移。
- 填写源端和目标端信息。
图8 表级迁移作业配置
- 单击“下一步”,进行字段映射。
图9 表级迁移表字段映射
- 确认无误后单击“下一步”。
- 在任务配置页面,“抽取并发数”表示单并发抽取数据,默认为1,可以适当调大取值,建议不要超过4,确认无误后,单击“保存并运行”。
图10 表级迁移任务配置
迁移作业开始执行,可以在作业任务栏中查看运行状态,等待作业迁移成功。图11 作业运行状态
- 配置并启动库级迁移作业。
- 单击“整库迁移”页签,单击“新建作业”。
- 按照提示输入各项,左侧是源端信息,右侧为目标端信息。填写完毕后单击“下一步”。
图12 库级迁移作业配置
- 勾选所有表或需迁移数据的表,单击中间右箭头转移到右侧,无误后单击“下一步”。
图13 选择迁移的表
- 填写作业配置参数。
- 同时执行的子作业个数:表示同时同步数据的表个数,默认为10,建议调到5以下。
- 抽取并发数:表示单并发抽取数据,默认为1,可以适当调大,建议不要超过4。
核对无误后单击“保存并运行”。
- 等待作业迁移完成。单击作业名称,可以看到各表的迁移完成情况。
图14 库级迁移作业列表
图15 各表数据迁移情况
步骤三:表数据校验
迁移完成之后,可使用数据校验工具DataCheck校验源端、目标端的数据是否一致。
- 下载软件包后,解压DataCheck-*.zip包,进入DataCheck-*目录,即可使用。目录下各文件的使用说明参见表2。
- 配置工具包。
- Windows环境下:
打开conf文件夹中的dbinfo.properties文件,根据实际需要进行配置。Holo源的配置参考下图:图16 配置DataCheck
文件中的密码src.passwd和dws.passwd可使用工具,执行以下命令生成密文。
encryption.bat password
运行成功后会在本地bin目录下生成加密文件,如下图。
- Linux环境下:
其他步骤相同。密文生成方法与上文中Window环境下的方法类似,命令为sh encryption.sh [password]。
- Windows环境下:
- 执行数据校验。
Windows环境下:
- 打开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
- 在bin目录下使用命令datacheck.bat执行校验工具:
- 查看已生成的校验结果 check_input_result.xlsx:
下图为源端元数据与目标端不一致的结果。
统计值校验参考下图。
Linux环境下:
- 编辑check_input.xlsx文件并上传,参考Window环境下的第一步。
- 使用命令sh datacheck.sh执行校验工具。
- 查看校验结果check_input_result.xlsx(校验结果分析与Windows场景相同)。
- 打开check.input文件,将要校验的Schema、数据库、源表、目标端表填入,Row Range可根据需要填写特定范围的数据查询语句。
参考信息
文件或文件夹 |
说明 |
|
---|---|---|
DataCheck |
bin |
保存校验工具入口脚本。
|
conf |
配置文件,进行源数据库和目的数据库的连接配置和日志打印设置。 |
|
lib |
保存校验工具运行所需的相关jar包。 |
|
check_input.xlsx |
|
|
logs |
压缩包中不包含该文件,校验工具执行后自动生成,记录工具运行过程日志。 |
|
check_input_result.xlsx |
压缩包中不包含该文件,执行校验工具后会在check_input.xlsx相同路径下生成校验结果文件。 |
DataCheck工具介绍 |
---|
|
校验级别 |
校验说明 |
校验相关语法 |
---|---|---|
低 |
|
|
中 |
|
|
高 |
|
|