关于 gt-checksum gt-checksum是GreatSQL社区开源的一款静态数据库校验修复工具,支持MySQL、Oracle等主流数据库。 特性MySQL DBA最常用的数据校验&修复工具应该是Percona Toolkit中的pt-table-checksum和pt-table-sync这两个工具,不过这两个工具并不支持MySQL MGR架构,以及国内常见的上云下云业务场景,还有MySQL、Oracle间的异构数据库等多种场景。 GreatSQL开源的gt-checksum工具可以满足上述多种业务需求场景,解决这些痛点。 gt-checksum工具支持以下几种常见业务需求场景:
以上这些场景,都可以利用gt-chcksum工具来满足。 下载可以 这里 下载预编译好的二进制文件包,已经在Ubuntu、CentOS、RHEL等多个下测试通过。 如果需要校验Oracle数据库,则还需要先下载Oracle数据库相应版本的驱动程序,并配置驱动程序使之生效。例如:待校验的数据库为Oracle 11-2,则要下载Oracle 11-2的驱动程序,并使之生效,否则连接Oracle会报错。详细方法请见下方内容:下载配置Oracle驱动程序 。 快速运行# 不带任何参数shell> ./gt-checksumIf no parameters are loaded, view the command with --help or -h# 查看版本号shell> ./gt-checksum -vgt-checksum version 1.2.0# 查看使用帮助shell> ./gt-checksum -hNAME: gt-checksum - A opensource table and data checksum tool by GreatSQLUSAGE: gt-checksum [global options] command [command options] [arguments...]...# 指定配置文件,开始执行数据校验,示例: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/600table db1.t1 checksum complete** gt-checksum Overview of results **Check time: 73.81s (Seconds)Schema Table IndexCol checkMod Rows Differences Datafixdb1 t1 ol_w_id,ol_d_id,ol_o_id,ol_number rows 5995934,5995918 yes file# 使用命令行传参方式执行数据校验shell> ./gt-checksum -S type=mysql,user=checksum,passwd=Checksum@123,host=172.16.0.1,port=3306,charset=utf8 -D type=mysql,user=checksum,passwd=Checksum@123,host=172.16.0.2,port=3306,charset=utf8 -t test.t2 -nit yes-- 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 SCOTT.A5[█ ]100% task: 1/1table SCOTT.A5 checksum complete** gt-checksum Overview of results **Check time: 0.29s (Seconds)Schema Table IndexCol checkMod Rows Differences Datafixtest t2 id rows 10,10 no file 下载配置Oracle驱动程序 如果需要校验Oracle数据库,则还需要先下载Oracle数据库相应版本的驱动程序。例如:待校验的数据库为Oracle 11-2,则要下载Oracle 11-2的驱动程序,并使之生效,否则连接Oracle会报错。 下载Oracle Instant Client从 https://www.oracle.com/database/technologies/instant-client/downloads.html 下载免费的Basic或Basic Light软件包。
源码编译 gt-checksum工具采用GO语言开发,您可以自行编译生成二进制文件。 编译环境要求使用golang 1.17及以上版本。 请参考下面方法下载源码并进行编译: shell> git clone https://gitee.com/GreatSQL/gt-checksum.gitshell> go build -o gt-checksum gt-checksum.goshell> chmod +x gt-checksumshell> mv gt-checksum /usr/local/bin也可以直接利用Docker环境编译,在已经准备好Docker运行环境的基础上,执行如下操作即可: shell> git clone https://gitee.com/GreatSQL/gt-checksum.gitshell> cd gt-checksum#构建Docker编译环境shell> docker build -t gt-checksum .#查看Docker镜像列表shell> docker images | grep gt-checksumgt-checksum latest a716d9d018b3 27 minutes ago 1.38GB#创建一个新容器,编译gt-checksumshell> docker run -itd --name=gt-checksum gt-checksum#将编译好的二进制文件copy到宿主机shell> docker cp gt-checksum:/go/release/gt-checksum-v1.2.0 .shell> cd gt-checksum-v1.2.0shell> ./gt-checksum -vgt-checksum version 1.2.0这就编译完成并可以开始愉快地玩耍了。 使用文档版本历史 已知缺陷 截止最新的1.2.0版本中,当表中有多行数据是完全重复的话,可能会导致校验结果不准确,详见 已知缺陷 。 问题反馈 |
合作电话:010-64087828
社区邮箱:greatsql@greatdb.com