好用的数据校验 & 修复工具 gt-checksum 开源啦
-
- 背景介绍
-
- 功能特性
-
- gt-checksum使用
-
- 3.1 标准使用案例
- 3.2 直接在命令行模式下使用
- 3.3 使用极简配置文件案例
-
- 项目信息
-
- 开源发布会
不用说,看名字也知道,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
工具支持以下几种常见业务需求场景:
- MySQL主从复制:主从复制中断后较长时间才发现,且主从间差异的数据量太多,这时候通常基本上只能重建复制从库,如果利用
pt-table-checksum
先校验主从数据一致性后 ,再利用pt-table-sync
工具修复差异数据,这个过程要特别久,时间代价太大。 - MySQL MGR组复制:MySQL MGR因故崩溃整个集群报错退出,或某个节点异常退出,在恢复MGR集群时一般要面临着先检查各节点间数据一致性的需求,这时通常为了省事会选 择其中一个节点作为主节点,其余从节点直接复制数据重建,这个过程要特别久,时间代价大。
- 上云下云业务场景:目前上云下云的业务需求很多,在这个过程中要进行大量的数据迁移及校验工作,如果出现字符集改变导致特殊数据出现乱码或其他的情况,如果数据迁 移工具在迁移过程中出现bug或者数据异常而又迁移成功,此时都需要在迁移结束后进行一次数据校验才放心。
- 异构迁移场景:有时我们会遇到异构数据迁移场景,例如从Oracle迁移到MySQL,通常存在字符集不同,以及数据类型不同等情况,也需要在迁移结束后进行一次数据校验才 放心。
- 定期校验场景:作为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 ...
注意:
- 极简配置文件名必须是
gc.conf-simple
。 - 配置文件中仅需指定源和目标端的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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【官宣】在线文档知识库管理工具 [zyplayer-doc] 加入 Dromara 开源社区
关于zyplayer-doc zyplayer-doc是一款适合团队和个人私有化部署使用的知识库、笔记、WIKI文档管理工具,同时还包含数据库管理、Api接口管理等模块。 在线文档:zyplayer-doc使用文档 体验地址:http://doc.zyplayer.com 开源地址:https://gitee.com/dromara/zyplayer-doc 功能介绍 知识库 项目提供在线化的知识库管理功能,专为私有化部署而设计,让数据掌握在自己手里,不会受制于三方平台或规则,最大程度上保证企业或个人的数据安全,你可以完全以内网的方式来部署使用它。 你也可以将其作为企业产品的说明文档来使用,项目支持一键将整个空间的内容开放到互联网,并提供有不同风格的开放文档页样式可供选择,省去为了产品的说明文档而去定制开发一个系统的成本。 支持的功能: 在线管理公司、个人的知识文档 文档支持按空间划分,按人员分组授权,支持空间收藏和空间内的文档开放访问。 文档支持编辑、查看、评论、上传附件、历史版本查看、页面权限控制、文档搜索等功能。 文档编辑支持html富文本方式编辑和markdown的方式编辑。 ...
- 下一篇
Hugging Face 每周速递: ChatGPT API 怎么用?我们帮你搭好页面了
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「Hugging News」,本期 Hugging News 有哪些有趣的消息,快来看看吧! 游戏与机器学习 🕹️ MarioGPT: 用文字描述来生成精致好玩的超级马里奥关卡 根据 Shyam Sudhakaran 等人的研究成果,现在你可以直接通过一句话、几个关键字来快速创作独一无二的马里奥关卡,快来试试吧! 论文: https://arxiv.org/abs/2302.05981 GitHub 仓库: https://github.com/shyamsn97/mario-gpt 体验地址: https://hf.co/spaces/multimodalart/mariogpt 开源库更新 🤗 Diffusers 0.13.0 版本带来可控生成特性 最新版本的 🤗 Diffusers 专注于各种可控生成的 pipeline,其中有一个非常典型的叫 StableDiffusionPix2PixZeroP...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题