pt-table-checksum数据校验工具

1.原理:
1.可以指定从库的数据校验:
提前在指定的数据库中建一个表,用于存储要校验的从库的ip、用户名、密码,用于主库连接从库,然后使用pt工具,pt在校验时会生成一个表,这个表的生成位置,可以在pt工具的参数中设置,这个表的作用是存储校验值、校验表的分块标记和校验时间等;pt在工作的时候,会将主库中的某个库中的某个表进行拆分,形成一个校验值存到生成的表当中,主库在生成一个表之后会生成相同的语句同步到从库中,从库做与主库相同的动作,生成表以及校验数据存入表中

还有一个pt-table-sync工具与上面的工具工作原理基本一致,但它有数据的恢复功能,会以主为主,将从库与主库不一致的部分拿出来形成一个sql语句,dba拿到这个sql语句,去从库中执行,会把不一致的部分补回到与主库一致

2.不指定从库数据校验:
默认是所有的表都会生成校验值,不提前建表,带参数的话,pt默认是show slave host / show processlist 库中所有的表进行校验

最后比较的是从库存放校验值表中的this_crc字段和master_crc字段
两者不一致表示主从数据不一致

2.参数:
pt-table-checksum
–user=用户名
–password=密码
–host=主库Ip
–replicate=检验结果存放的库.校验结果存放的表
–recursion-method=hosts (发现从库的方式)
–no-check-binlog-format
–empty-replicate-table #每个表在校验前清空之前的校验数据
–replicate-check-retries=3
–recurse=1
–run-time=运行的时间长
–ignore databases=不检验的数据库

注意:
–recursion-method表示的是发现从库的方式,pt工具默认可以在主库的processlist中找到从库复制进程,从而使别出有哪些从库,但是如果是非3306端口,会导致找不到从库信息,此时就用hosts方式,需要提前在从库my.cnf中配置

report_host = MASTER_HOST
report = 3306

参考:https://tyoung.me/2016/09/usage_of_pt-table-checksum_and_replication_consistency_check/

猜你喜欢

转载自blog.csdn.net/weixin_43202081/article/details/107919400