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 #每个表在校验前清空之前的校验数