好用的数据校验&修复工具gt-checksum开源啦
- GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
- GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
- 作者: GreatSQL社区
- 文章来源:GreatSQL社区原创
-
- 背景介绍
-
- 功能特性
-
- 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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Tableau连接openGauss实践
目录 一、摘要 二、什么是Tableau? 三、安装Tableau 四、安装ODBC驱动 1、openGauss数据库 2、连接前置条件 3、Tableau连接openGauss方式一 4、Tableau连接openGauss方式二 一、摘要 Tableau可以连接到多种数据库,包括关系型数据库,如MySQL,Oracle,Microsoft SQL Server,PostgreSQL等,以及非关系型数据库,如Hadoop,Amazon Redshift,Google BigQuery等。Tableau可以从数据库中提取数据,并将其可视化,以便更好地理解和分析数据。本文将简单介绍一下Tableau如何连接openGauss数据库。 二、什么是Tableau? 1、首先我们先认识一下Tableau,Tableau 是一个可视化分析平台,它改变了我们使用数据解决问题的方式,使个人和组织能够充分利用自己的数据。Tableau 是一款能够帮助大家查看并理解数据的商业化智能软件。 2、Tableau的产品特点: 快速分析:在数分钟内完成数据连接和可视化。Tableau 比现有的其他解决方案快 ...
- 下一篇
又拍云邵海杨 - 25年Linux老兵,聊聊运维的“术”与“道”
您好邵总,请您先做个自我介绍吧,聊聊您的履历和现状,让大家更好的认识您,了解您的背景也有助于读者理解后面的采访内容 我是来自又拍云的邵海杨,从1998年开始使用Linux至今快25年了,资深(老鸟)Linux系统运维/架构师,DevOps八荣八耻倡导者,业余撰稿人;精通(心虚)系统优化及网络服务管理,Linux系统定制,CDN加速和安全防御; 擅长互联网高性能网络及架构设计、虚拟化KVM及OpenStack云平台, K8S容器云和Ceph分布式存储等新技术;喜欢交流分享,活跃于社区,一直积极投身于开源活动的组织和传播。 运维领域,每个公司都会制定自己的运维准则或者操作规范,能否分享一下贵司的经验,给我们一些参考? 又拍云是一家提供云存储,云分发,云处理服务的公司,也是国内首创可编程CDN 服务的专业云服务提供商,特点就是7x24全年不间断服务,所以云运维也有一些律条或原则,比如: 先保障稳定,然后再优化 过度设计或过早优化很可能会带来更多的故障停机时间,要先集中精力提高系统的可扩展性和高可用性。坚持 “先完成,再完善,后完美”,项目也是“先能用,再好用,后用好”的实施策略。 提供可靠的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6