pt-table-checksum和pt-table-sync
- 下载并安装percona-toolkit及所需要用到的依赖
wget /downloads/percona-toolkit/LATEST/RPM/percona-toolkit-2.2.
yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes -y
rpm -ivh percona-toolkit-2.2.
- 1
- 2
- 3
- 4
- 5
-
pt-table-checksum
用途: 可以用来检测主、 从数据库中数据的一致性。
原理: 在主库上运行, 对同步的表进行checksum, 记录下来。 然后对比主从中各个表的checksum是否一致, 从而判断数据是否一致。
-
pt-table-sync
用途:用来修复多个实例之间数据的不一致,它可以让主从的数据修复到最终一致,也可以使通过应用双写或多写的多个不相关的数据库实例修复到一致。同时它还内部集成了pt-table-checksum的校验功能,可以一边校验一边修复,也可以基于pt-table-checksum的计算结果来进行修复。
原理:
先检查表,然后获取每列的数据类型,然后把类型转化为字符串,利用concat_wa()函数进行连接,然后以crc32校验计算出checksum值; -
使用pt-table-checksum
#检查表是否同步 DIFFS为1代表数据不一致
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate= --databases=acsp h=127.0.0.1,u=root,p=password,P=3306
- 1
参数详解:
–nocheck-replication-filters:不检查复制的过滤规则,比如replicate-ignore-db、replicate-wild-do-table。
–no-check-binlog-format:不检查复制的binlog模式,如果binlog模式是row模式,需要启用该参数。
–create-replicate-table:第一次进行checksum需要启用该参数,会进行checksum表的创建,用于存放结果。
–replicate=:存放checksum结果的表。
–databases:表示要检查的库。
–tables(-t):表示要检查的表。
–replicate-check-only:表示只显示不同步的表。
–recursion-method:正常情况下工具会自动识别从库,如果识别失败,可以用该参数 指定查找slave的方法,参数有四种,分别是processlist、hosts、dsn=DSN、no四种,用来决定查找slave的方式是通过show processlist、show slave hosts还是通过dsn=DSN的方式。
以上参数可以根据自己的要校验的情况自行选择。
- 同步语句
pt-table-sync --replicate=acsp.checksums h=127.0.0.1,u=root,p=password h=192.168.1.21,u=root,p=passowrd --print --tables=acsp.tb_so_synthesis
- 1
参数详解:
在后面加上从库的IP和用户密码
–print:代表打印出需要同步的语句
–tables:代表指定检查某个表
–execute:如果直接加–execute 代表不查看语句直接执行 如下:
pt-table-sync --replicate=acsp.checksums h=127.0.0.1,u=root,p=password h=192.168.1.21,u=root,p=password--execute
- 1