好用的数据校验 & 修复工具 gt-checksum 开源啦


    1. 背景介绍
    1. 功能特性
    1. gt-checksum使用
    • 3.1 标准使用案例
    • 3.2 直接在命令行模式下使用
    • 3.3 使用极简配置文件案例
    1. 项目信息
    1. 开源发布会

不用说,看名字也知道,gt-checksum工具是数据校验工具。

没错,gt-checksum 是GreatSQL社区新增的成员,它是 一款静态数据库校验修复工具,支持MySQL、Oracle等主流数据库,采用Go语言开发,今天正式开源。

1. 背景介绍

作为MySQL DBA,相信应该都听说过Percona出品的 pt-table-checksum & pt-table-sync 工具(没听说过的绝对不是合格的MySQL DBA,嘿嘿),可以用它俩进行数据校验及修复工作,非常好用。

不过,在MySQL MGR架构中,或者是当下常见的上云、下云业务中,以及MySQL、Oracle间的异构数据等多种场景中,pt工具并不支持。针对这些需求痛点,我们结合平时遇到的客户需求,开发了 gt-checksum 数据校验&修复工具,并贡献给GreatSQL社区,进行开源,继续促进业内开源生态健康发展。

gt-checksum工具支持以下几种常见业务需求场景:

  1. MySQL主从复制:主从复制中断后较长时间才发现,且主从间差异的数据量太多,这时候通常基本上只能重建复制从库,如果利用 pt-table-checksum 先校验主从数据一致性后 ,再利用 pt-table-sync 工具修复差异数据,这个过程要特别久,时间代价太大。
  2. MySQL MGR组复制:MySQL MGR因故崩溃整个集群报错退出,或某个节点异常退出,在恢复MGR集群时一般要面临着先检查各节点间数据一致性的需求,这时通常为了省事会选 择其中一个节点作为主节点,其余从节点直接复制数据重建,这个过程要特别久,时间代价大。
  3. 上云下云业务场景:目前上云下云的业务需求很多,在这个过程中要进行大量的数据迁移及校验工作,如果出现字符集改变导致特殊数据出现乱码或其他的情况,如果数据迁 移工具在迁移过程中出现bug或者数据异常而又迁移成功,此时都需要在迁移结束后进行一次数据校验才放心。
  4. 异构迁移场景:有时我们会遇到异构数据迁移场景,例如从Oracle迁移到MySQL,通常存在字符集不同,以及数据类型不同等情况,也需要在迁移结束后进行一次数据校验才 放心。
  5. 定期校验场景:作为DBA在维护高可用架构中为了保证主节点出现异常后能够快速放心切换,就需要保证各节点间的数据一致性,需要定期执行数据校验工作。

以上这些场景,都可以利用 gt-chcksum 工具来满足。

2. 功能特性

在正式开源之前,gt-checksum 工具已经在内部经过了十数个版本迭代,可以满足绝大多数场景下的数据校验&修复需求,尤其是MySQL、Oracle间的异构数据库场景。

gt-checksum 工具主要功能特性有:

  • 支持主从复制、MGR以及MySQL、Oracle间的数据校验&修复;
  • 数据库名、表名设置支持多种正则表达式
  • 支持多种字符集
  • 支持设置表名大小写敏感
  • 支持多种数据校验模式,数据、表结构、索引、分区、外键、存储过程等
  • 支持多种数据校验方式,全量校验,抽样校验和行数校验
  • 支持多种数据修复模式,校验完毕后直接修复或是生成修复SQL文件再自行手动处理
  • 支持校验无索引表
  • 支持并发多线程校验
  • 更好支持大表数据校验,效率更高,且基本不会发生OOM等问题

3. gt-checksum使用

3.1 标准使用案例

指定配置文件,开始执行数据校验,示例:

shell> gt-checksum -f ./gc.conf
-- gt-checksum init configuration files --
-- gt-checksum init log files --
-- gt-checksum init check parameter --
-- gt-checksum init check table name --
-- gt-checksum init check table column --
-- gt-checksum init check table index column --
-- gt-checksum init source and dest transaction snapshoot conn pool --
-- gt-checksum init cehck table query plan and check data --
begin checkSum index table db1.t1
[████████████████████████████████████████████████████]113%task: 678/600
table db1.t1 checksum complete

** gt-checksum Overview of results **
Check time:73.81s (Seconds)
SchemaTable IndexColcheckModRowsDifferences Datafix
db1 t1ol_w_id,ol_d_id,ol_o_id,ol_number rows5995934,5995918 yes file

3.2 直接在命令行模式下使用

设定只校验db1库下的所有表,不校验test库下的所有表,并设置没有索引的表也要校验

shell> gt-checksum -S type=mysql,user=root,passwd=abc123,host=172.16.0.1,port=3306,charset=utf8 -D type=mysql,user=root,passwd=abc123,host=172.16.0.2,port=3306,char
set=utf8 -t db1.* -it test.* -nit yes

3.3 使用极简配置文件案例

gt-checksum还支持极简配置文件模式,最少只需要配置三个参数,即可完成数据校验,例如:

shell> cat gc.conf-simple
[DSNs]
srcDSN = mysql|pcms:abc123@tcp(172.17.16.1:3306)/information_schema?charset=utf8
dstDSN = mysql|pcms:abc123@tcp(172.17.16.2:3306)/information_schema?charset=utf8

[Schema]
tables = db1.t1

shell> gt-checksum -f ./gc.conf-simple
...

注意

  1. 极简配置文件名必须是 gc.conf-simple
  2. 配置文件中仅需指定源和目标端的DSN,以及要校验的表名即可。

更多使用场景和案例欢迎大家一起来解锁。

4. 项目信息

gt-checksum代码已上传到 gitee 上,项目地址 https://gitee.com/GreatSQL/gt-checksum,欢迎围观、加星,也欢迎来“找茬”,提patch/issue。

5. gt-checksum正式开源发布会

gt-checksum开源发布会将在 03月06日 19:00-22:30 举办 :) 会议链接:https://meeting.tencent.com/dw/dXYm49HwVx1g


相關推薦

2024-07-10

化 修改路由name命名规则(感谢 玲娜贝er) update 优化 大数据量下join卡顿问题 使用子查询提高性能 update 优化 用户ID查询角色列表(感谢 AprilWind) update 优化 获取用户账户(感谢 AprilWind) update 优化 租户列表接口 避免登录

2023-07-13

[修复] 修复系统初始化脚本,默认缺少对象存储相关权限数据问题。 [修复] 修复工作流服务 bootstrap 配置,解决工作流服务配置与当前环境不匹配问题 [优化] 前端重命名 Table 相关 hooks 命名,更加准确定位其用途 [优化] 前

2023-02-19

洛雪音乐助手是一个功能强大、音乐齐全、操作简单的音乐播放器,支持导入其他主流音乐播放器的歌单、支持多设备同步功能,可在 Windows、MacOS、Linux 平台运行。 洛雪音乐 2.1.0 发布了,此版本带来海量新功能: 新增 新

2024-11-01

5.1.8发布啦,主要更新了如下功能: 1、新增:支持部门数据权限设置,从而支持子公司模式:也就是每个公司的数据可隔离,子公司只能看自己的数据,也可对对应的人员员可以看全部数据 2、新增:员工身份字段 3、修复:

2023-02-26

建模 - v4],历时五年,持续升级,工匠精神,做一款简单好用的数据库建模平台。 元数建模平台,使用 React+Electron+Java 技术体系构建。 [PDMan-v2] --> [CHINER-v3] --> [PDManer-v4],连续五年,一直保持很好的传承和延续。 PDMane

2023-07-18

功能改进 gdb 改进ORM SQL日志记录,操作的字段按照数据表字段定义顺序进行操作。 改进HOOK方法实现,支持修改in参数的Table字段后修改执行的表名。 新增AllAndCount/ScanAndCount方法,用于实现便捷的分页查询场景。 新增M

2023-07-23

建模-v4],历时五年,持续升级,工匠精神,做一款简单好用的数据库建模平台。 元数建模平台,使用React+Electron+Java技术体系构建。 [PDMan-v2] --> [CHINER-v3] --> [PDManer-v4],连续五年,一直保持很好的传承和延续。 PDManer元

2023-11-27

建模 - v4],历时五年,持续升级,工匠精神,做一款简单好用的数据库建模平台。 元数建模平台,使用 React+Electron+Java 技术体系构建。 [PDMan-v2] --> [CHINER-v3] --> [PDManer-v4],连续五年,一直保持很好的传承和延续。 PDMane

2022-11-02

zyplayer-doc 是一款开源的在线文档工具,现有 API 接口文档(Swagger、OpenApi、自建接口)、WIKI 文档、数据库文档(数据库表结构查看管理、SQL 执行)、Dubbo 文档。 在线文档:zyplayer-doc 使用文档 体验地址:http://doc.zyplayer.com 

2023-06-08

建模 - v4],历时五年,持续升级,工匠精神,做一款简单好用的数据库建模平台。 元数建模平台,使用 React+Electron+Java 技术体系构建。 [PDMan-v2] --> [CHINER-v3] --> [PDManer-v4],连续五年,一直保持很好的传承和延续。 PDMane

2023-07-19

复了Enabled为false时,PasswordChar失效的问题 + UCompress: 增加数据帧压缩类

2023-02-05

zyplayer-doc是一款现代化的适合团队和个人使用的WIKI文档管理工具,同时还包含数据库文档、Api接口文档 在线文档:zyplayer-doc使用文档 体验地址:http://doc.zyplayer.com  账号:zyplayer 密码:123456 开源地址:https://gitee.com/zyplayer

2023-06-01

改的时候调动时间错误问题; 14、修复:用章、用车基础数据校验时错误数据表的问题; 15、优化:tablePlus组件,表格导出新增默认参数; 16、修复:项目详情编辑合同失败的问题; 17、修复:发布工作汇报列表中按时间搜索显

2024-04-26

gresql Nacos Docker   Dante Cloud 自开源以来一直支持多数据的切换。对于使用 MySQL 的朋友来说,不存在部署多个数据库的问题。但是,对于使用 其它数据库(比如:Postgresql)的朋友来说,部署 Dante Cloud 就