使用 gt-checksum 分析迁移对象

打印 上一主题 下一主题

主题 1761|帖子 1761|积分 5283

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
使用 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三张普通表为例

  • 一般情况  无需映射(迁移到目的端后,库名表名不变)
  1. PCMS,BMSQL_WAREHOUSE
  2. PCMS,BMSQL_CONFIG
  3. PCMS,BMSQL_DISTRICT_TMP
复制代码
映射关系示意图
  1. SOURCE                 -->  DEST
  2. -- 示例1:PCMS,BMSQL_WAREHOUSE
  3. PCMS.BMSQL_WAREHOUSE   --> PCMS.BMSQL_WAREHOUSE
复制代码

  • 库映射 (迁移到目的端后,表名不变,库名改变)
  1. PCMS:WLKY,BMSQL_WAREHOUSE
  2. PCMS:WLKY,BMSQL_CONFIG
  3. PCMS:WLKY,BMSQL_DISTRICT_TMP
复制代码
映射关系示意图
  1. SOURCE                 -->  DEST
  2. #示例1:PCMS:WLKY,BMSQL_WAREHOUSE
  3. PCMS.BMSQL_WAREHOUSE   --> WLKY.BMSQL_WAREHOUSE
复制代码

  • 表映射 (迁移到目的端后,库名不变,表名改变)
  1. PCMS,BMSQL_WAREHOUSE:BMSQL_WAREHOUSE_0429
  2. PCMS,BMSQL_CONFIG:BMSQL_CONFIG_0429
  3. PCMS,BMSQL_DISTRICT_TMP:BMSQL_DISTRICT_TMP_0429
复制代码
映射关系示意图
  1. SOURCE                 -->  DEST
  2. #示例1:PCMS,BMSQL_WAREHOUSE:BMSQL_WAREHOUSE_0429
  3. PCMS.BMSQL_WAREHOUSE   --> PCMS.BMSQL_WAREHOUSE_0429
复制代码

  • 库表映射 (迁移到目的端后,库名表名都改变)
  1. PCMS:WLKY,BMSQL_WAREHOUSE:BMSQL_WAREHOUSE_0429
  2. PCMS:WLKY,BMSQL_CONFIG:BMSQL_CONFIG_0429
  3. PCMS:WLKY,BMSQL_DISTRICT_TMP:BMSQL_DISTRICT_TMP_0429
复制代码
映射关系示意图
  1. SOURCE                 -->  DEST
  2. #示例1:PCMS:WLKY,BMSQL_WAREHOUSE:BMSQL_WAREHOUSE_0429
  3. PCMS.BMSQL_WAREHOUSE   --> WLKY.BMSQL_WAREHOUSE_0429
复制代码
gc-task.cnf配置示例
  1. $ cat qianyi PCMS,BMSQL_WAREHOUSE
  2. PCMS,BMSQL_CONFIG
  3. PCMS,BMSQL_DISTRICT_TMP$ cp -r config-simple config$ cat config/gc-task.cnfDSNs {    srcDSN = "oracle|user/password@ip:port/sid"    dstDSN = "cluster|user:password@tcp(ip:port)/information_schema?charset=utf8mb4"}rules {    task {             object = "qianyi"        limiter = ","        igcount = false        active = struct    }}
复制代码
执行分析命令

gc-task.cnf 配置完成后即可进行迁移对象的分析操作,执行命令如下
  1. $ ./gt-checksum -f config/gc-task.cnf
复制代码
如下输出表示分析操作成功
  1. $ ./gt-checksum -f config/gc-task.cnf
  2. -- gt-checksum init configuration files --
  3. -- gt-checksum init log files --
  4. -- gt-checksum init check parameter --
  5. -- gt-checksum check parameter legality--
  6. godror WARNING: discrepancy between DBTIMEZONE ("+00:00"=0) and SYSTIMESTAMP ("+08:00"=800) - set connection timezone, see https://github.com/godror/godror/blob/master/doc/timezone.md
  7. ----begin read table object file and init table meta data---
  8. ----begin write data to xls ---
  9. [gt_tableObjectOptimizer_2025-02-18T15-34-03.xlsx] 元数据校对Excel表格已生成
  10. ----begin general gt-checksum config file ---
  11. [gc-struct.cnf] 配置文件已生成
  12. -- gt-task Table object sorting completed !!! --
复制代码
分析结果解析

分析操作执行成功后,会在 gt-checksum 同级目录下生成分析结果Excel ,文件以 “gt_tableObjectOptimizer_” 为前缀。
sheet说明

Excel中包罗三个sheet,各个sheet说明如下:

  • indexTask:有索引的表清单
  • missindexTask:无索引的表清单
  • tableMiss:迁移对象列表中存在,但在源端Oracle环境中不存在的表清单
留意:

  • “迁移对象”指业务方给出的必要做迁移的表清单
  • tableMiss 中的表特别留意,这部分表必要拿出来去跟业务侧确认是否迁移
title 说明

Excel 中含三个 sheet 的 title 一致,内容解析如下:
[code]schema          库名                                                         table           表名lobCN           lob字段名称,若无lob字段,相干列为空                            lobCT           lob字段类型textCN          text字段名称,若无text字段,相干列为空                      textCT          text字段类型indexName       索引名称                                                      indexType       索引类型indexColumn     索引字段名称                                              columnType      索引字段类型cardinality     索引离散度rate evaluation 索引离散度等级 有索引表: 优(>50%)良(40%-50%)差(
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表