pt-table-checksum主从一致性校验工具

来源:转载



pt-table-checksum主从一致性校验工具


1. 功能介绍

检查mysql复制一致性.


2. 用法介绍

pt-table-checksum [OPTION…] [DSN]

工作原理: pt-table-checksum在主上执行检查语句在线检查mysql复制的一致性,生成replace语句,然后通过复制传递到从,再通过update更新master_src的值。通过检测从上this_src和master_src的值从而判断复制是否一致。

[DSN] 指向的是主的地址。

 
注意事项:
测试需要一个既能登录主库、也能登录从库,而且能同步数据库的账号。 只能指定一个host,必须为主库的ip. 在检查时会向表加S锁. 运行之前需要从库的同步IO和SQL进程是YES状态 如果在配置主从时, 忽略复制mysql库时, 需要在主上和从上都执行下面的授权语句。 mysql> grant select, process, super, replication slave on *.* to 'checksums'@'x.x.x.x' identified by '123456';
 备注: 使用的时候选择业务地峰的时候运行,因为运行的时候会造成表的部分记录锁定。 使用--max-load来指定最大的负载情况,如果达到那个负载这个暂停运行。如果发现有不一致的数据,可以使用pt-table-sync工具来修复。 (和1.0版本不同,新版本的pt-table-checksum只需要在master上执行即可)
3. [OPTION..]–选择参数
--nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用
--databases:来指定需要检查的数据库。
--no-check-binlog-format : 不检查复制的binlog模式,要是binlog模式是ROW,则会报错。
--replicate-check-only :只显示不同步的信息。
--replicate= :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。
--databases= :指定需要被检查的数据库,多个则用逗号隔开。
--tables= :指定需要被检查的表,多个用逗号隔开
--create-replicate-table: 创建表(给用户创建表的权限)
--recursion-method: 主机信息
h=127.0.0.1 :Master的地址
u=root :用户名
p=123456 :密码
P=3306 :端口
4. 实例:
实例1:
>>> pt-table-checksum --nocheck-replication-filters --databases=activity --replicate=radius.checksums --create-replicate-table --no-check-binlog-format --host=192.168.7.131 --port=3306 -uroot -p123456
 TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE07-31T14:17:44 0 1 4 1 0 1.131 activity.t
 TS :完成检查的时间。 ERRORS :检查时候发生错误和警告的数量。 DIFFS :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。 ROWS :表的行数。 CHUNKS :被划分到表中的块的数目。 SKIPPED :由于错误或警告或过大,则跳过块的数目。 TIME :执行的时间。 TABLE :被检查的表名。
 mysql > select * from radius.checksums; db: activity tbl: t chunk:1 chunk_time:0.001246 chunk_index:NULLlower_boundary:NULLupper_boundary:NULL this_crc: 706af48f #slave this_cnt:4 #slave master_crc: e963a535 #master master_cnt:4 #master 可以发现表t1中从库比主库多0条记录 ts:2014-04-13 16:05:16


分享给朋友:
您可能感兴趣的文章:
随机阅读: