pt工具(3)pt-table-checksum数据一致性校验

作者: Huang Jinqiang 分类: MySQL 发布时间: 2017-04-12 15:39

原理: 在主库执行, 设置会话的binlog格式为statement格式, 设置会话的隔离级别为RR, 执行show processlist或show slave hosts确定从库的连接方式,把校验SQL先在master执行,再传到slave执行,如果主从分别执行的结果一样,那数据就是一致性,否则数据不一致。
其核心原理是把表的所有字段拼成一个值,做hash code运算,得到一个crc32的值,记录到master_cnc和master_cnt
create database percona;
create user checksum@'172.16.123.%' identified by 'chk123!@#';
GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'checksum'@'172.16.123.%';
GRANT ALL PRIVILEGES ON percona.* TO 'checksum'@'172.16.123.%';

输出解读
TS 省略年份的日期时间
ERRORS 发生错误的次数
DIFFS 发生了几个chunk里的数据不一致,(chuk默认为1000条记录)
ROWS 表的总行数
CHUNKS 表划分多少个CHUNK
SKIPPED 发生错误跳过的
TIME 校验数据占用的时间
TABLE 校验的表名

使用pt-table-checksum的注意事项:
(1) 在主库执行
(2) 一般忽略mysql库校验

发表评论

电子邮件地址不会被公开。 必填项已用*标注