使用 gt-checksum 分析迁移对象
使用 gt-checksum 分析迁移对象
背景
本文以从 ORACLE 迁移到 GreatSQL 为例讲述如何使用 gt-checksum 分析迁移对象。
关于 gt-checksum
gt-checksum 是 GreatSQL 社区开源的一款静态数据库校验修复工具,支持 MySQL、Oracle 等主流数据库。如下是一个简单的分析迁移对象的使用案例。
本次使用的是 gt-checksum 商业版本
为什么需要分析迁移对象?
首先我们通过一个项目案例来说明一下去 O 过程中为什么需要分析迁移对象。
项目背景
当前有个去 O 项目,总共 3000 张业务表 ,总数据量大概在 3T 左右,业务方要求在 3 小时内迁移完成。
思考
这时,我们就要思考,如何能在规定时间内完成迁移?影响迁移效率的因素有哪些?
索引的选择性
业务表有没有索引;是主键索引还是普通索引;是全局索引还是本地索引;若存在索引,索引的离散度如何。
元数据合理性
业务表中有没有 lob 或者 text 字段,若存在,总共有多少个 lob 或 text 字段;业务表是否是分区表,表的分区类型是什么以及总共有多少个分区。
表的数据量
每张表各有多少数据量,百万级、千万级还是亿级别。
上述的这些信息,通过 gt-checksum 的迁移对象分析,我们都可以获取到。
下面开始分析流程。
如何分析迁移对象?
配置 gc-task.cnf 配置文件
分析行为依赖于配置文件 config-simple/gc-task.cnf
,在分析操作开始前,需要先根据项目实际信息配置好此文件,如下是配置说明。
gc-task.cnf 配置说明
DSNs(连接模块)
srcDSN:源端连接串
dstDSN:目标端连接串
srcDSN/dstDSN:格式存在差异 严格根据示例填写 注意双引号不要漏 配置需仔细
密码中有 &符号的需要转义处理下(&)
rules(规则模块)
object:迁移对象列表 文件名称自定义;格式:库名 分隔符 表名 位置:与 gt-checksum 在同级目录
limiter:迁移对象列表的分隔符,默认为逗号
igcount:分析时是否输出表行数 true: 不输出 false: 输出
active:生成配置文件类型 struct:表结构 index:索引 sync:数据迁移......
详细说明见 gc-task.cnf 文件注释
object 配置说明
object 支持如下四种配置方式:
以迁移 PCMS 库下BMSQL_WAREHOUSE
、BMSQL_CONFIG
、 BMSQL_DISTRICT_TMP
三张普通表为例
一般情况 无需映射(迁移到目标端后,库名表名不变)
映射关系示意图
库映射 (迁移到目标端后,表名不变,库名改变)
映射关系示意图
表映射 (迁移到目标端后,库名不变,表名改变)
映射关系示意图
库表映射 (迁移到目标端后,库名表名都改变)
映射关系示意图
gc-task.cnf 配置示例
执行分析命令
gc-task.cnf 配置完成后即可进行迁移对象的分析操作,执行命令如下
如下输出表示分析操作成功
分析结果解析
分析操作执行成功后,会在 gt-checksum 同级目录下生成分析结果 Excel ,文件以 “gt_tableObjectOptimizer_” 为前缀。
sheet 说明
Excel 中包含三个 sheet,各个 sheet 说明如下:
indexTask:有索引的表清单
missindexTask:无索引的表清单
tableMiss:迁移对象列表中存在,但在源端 Oracle 环境中不存在的表清单
注意:
“迁移对象”指业务方给出的需要做迁移的表清单
tableMiss 中的表特别注意,这部分表需要拿出来去跟业务侧确认是否迁移
title 说明
Excel 中含三个 sheet 的 title 一致,内容解析如下:
到此就是一个完整的迁移对象分析流程了。
版权声明: 本文为 InfoQ 作者【GreatSQL】的原创文章。
原文链接:【http://xie.infoq.cn/article/a1f21499cdc4ecebd236322e5】。文章转载请联系作者。
评论