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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 好用的数据校验&修复工具gt-checksum开源啦
  • 1. 背景介绍
  • 2. 功能特性
  • 3. gt-checksum使用
  • 3.1 标准使用案例
  • 3.2 直接在命令行模式下使用
  • 3.3 使用极简配置文件案例
  • 4. 项目信息
  • 5. 开源发布会

不用说,看名字也知道,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)
Schema  Table                   IndexCol                                checkMod        Rows            Differences     Datafix
db1     t1                      ol_w_id,ol_d_id,ol_o_id,ol_number       rows            5995934,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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
NoSQL 安全 MongoDB
Mongo DB之用户与权限管理、备份与恢复管理以及客户端工具的使用
MongoDB是一款灵活且高性能的文档型数据库,具有可扩展性和强大的查询功能,适用于各种应用场景。
1243 1
|
JSON NoSQL Redis
redis-full-check校验工具
redis-full-check是阿里云Redis&MongoDB团队开源的用于校验2个redis数据是否一致的工具,通常用于redis数据迁移后正确性的校验。
24838 0
|
4月前
|
数据采集 监控 数据管理
【能力比对】数据质量管理VS数据质量平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
【能力比对】数据质量管理VS数据质量平台
|
存储 SQL 容灾
推荐一款好用的数据一致性校验工具
NineData 是玖章算术旗下的多云数据管理平台,它是一款即开即用的数据管理 SAAS 服务。当前 NineData 已经支持数十种常见同异构数据源(MySQL、SQLServer、CK 等)之间的结构对比、数据对比及数据订正能力。NineData 结构及数据对比作为独立服务,可以灵活支持 IDC、云主机自建及云托管数据源的数据一致性校验及快速修复。从使用体验、产品能力、稳定性及性能等维度综合来看,NineData 是一款综合实例比较强、比较难得的校验工具。
4366 1
推荐一款好用的数据一致性校验工具
|
Ubuntu 安全 网络协议
|
监控 NoSQL MongoDB
【MongoDB 专栏】MongoDB 查询优化技巧
【5月更文挑战第10天】本文探讨了MongoDB查询优化技巧,包括合理使用索引、优化查询语句、数据模型简化、避免全表扫描、选择合适查询方法及监控性能。通过案例分析展示了优化策略及其效果,强调了持续优化对提升数据库性能和用户体验的重要性。掌握这些技巧能有效挖掘MongoDB的潜力。
506 2
【MongoDB 专栏】MongoDB 查询优化技巧
|
人工智能 自然语言处理 供应链
阿里云联合伙伴发起“物流智能联盟”
物流行业内首个专注于大模型应用研究与实践的联盟“物流智能联盟”在杭州成立,旨在加速大模型在物流领域落地,用AI助力物流行业增效降本和业务创新。该联盟由阿里云、菜鸟、高德地图、中远海运、东航物流、圆通速递、申通快递、中通快递、德邦快递、G7易流、地上铁、浙江大学智能交通研究所等在2024数智物流峰会上共同成立。
|
监控 安全 Linux
服务器是什么?(四种服务器类型)
服务器是什么?(四种服务器类型)
713 0
|
SQL Java 关系型数据库
Mybatis保姆级丝滑教程(一文搞懂系列)(1)
Mybatis保姆级丝滑教程(一文搞懂系列)
1225 0