pt-table-checksum原理
2021-08-17 14:32:01 1 举报
为你推荐
查看更多
pt-table-checksum原理
作者其他创作
大纲/内容
检查表结构,进行数据类型转换等,生成checksum的sql语句
默认在chunk一个表之前,先删除上次这个表相关的计算结果。除非—resume
校验结束后,在每个从库上,执行如下的sql语句即可看到是否有主从不一致发生: select * from percona.checksums where master_cnt <> this_cnt OR master_crc <> this_crc OR ISNULL(master_crc) <> ISNULL(this_crc) \\G
根据explain的结果,判断chunk的size是否超过了你定义的chunk-size的上限。如果超过了,为了不影响线上性能,这个chunk将被忽略。
等待从库追上主库。如果没有延迟备份的从库在运行,最好检查所有的从库,如果发现延迟最大的从库延迟超过max-lag秒,pt工具在这里将暂停。
继续下一个chunk,直到这个table被chunk完毕
调整下一个chunk的大小。
等待从库执行完checksum,便于生成汇总的统计结果。每个表汇总并统计一次。
开始checksum表。
循环每个表,直到结束。
根据表上的索引和数据的分布,选择最合适的split表的方法
开始获取表,一个个的计算
如果发现主库的max-load超过某个阈值,pt工具在这里将暂停。
如果是表的第一个chunk,那么chunk-size一般为1000;如果不是表的第一个chunk,那么会根据具体服务器运行情况调整chunk的大小
连接到主库,查找主库的所有从库
查找主库或者从库是否有复制过滤规则,有会报错,可以关掉这个检查但是有风险
把计算结果存储到master_crc master_count列中。
把要checksum的行加上for update锁,并计算。
0 条评论
回复 删除
下一页