如需转载请注明出处
我丑 话说在前头:
192.168.1.116 主masterA Windows MySQL8.0
192.168.1.200 备库B,VMUbuntu18 MySQL8.0shell代表Ubuntu终端
cmd代表Windows终端----------------------------------------------------------------------------------------------------------------
1
使用percona-toolkit工具集中的pt-table-chechsum
下载percona-toolkit地址(有点慢,到外面去会快点):
----------------------------------------------------------------------------------------------------------------
2
shell>
pt-table-checksum --no-check-binlog-format --replicate=autoclub_db.checksums --databases=autoclub_db -ulgl -p123456 -h 192.168.1.116--no-check-binlog-format:默认yes,建议启用不检查模式 --replicate:把信息写入到指定表中,会在autoclub_db中创建checksums表 --databases:指定库,用逗号隔开 --tables:指定表,用逗号隔开 -ulgl -p123456 -h 192.168.1.116:格式固定,-u -p后不能用空格隔开
得到如下表:
TS ERRORS DIFFS ROWS DIFF_ROWS CHUNKS SKIPPED TIME TABLE 01-02T15:29:35 0 0 210 0 1 0 0.122 autoclub_db.article_infosDIFFS:0无差异,1存在不同 ROWS:所检测的表的行数
原理:针对两库中的某张表的所有字段进行hash运算,得到主库为master_crc、master_cnt,从库为this_crc、this_cnt,然后分别对比,判断一致性。
----------------------------------------------------------------------------------------------------------------
3
对于从库宕机,恢复后,会自动与主库进行同步。
对于主库来说需要使用pt-table-sync进行数据修复,如果两库均在Linux系统下的转到4,数据修复。
其中对于windows来说官方没有给出percona的windows版本,我这里无法与从库同步,所以目前我还没有对4进行真正的实验,以下内容均为胡编乱造。
----------------------------------------------------------------------------------------------------------------
4
估且认为我的A mysql是在Linux Unbuntu环境下搭建的
A shell>
pt-table-sync --replicate=autoclub_db.checksums h=192.168.1.200,u=lgl,p=123456 -print--replicate:表示使用part2生成的表 -print:打印但不执行A shell>
pt-table-sync --replicate=autoclub_db.checksums h=192.168.1.200,u=lgl,p=123456 -execute-execute:执行命令 在使用part2效验数据是否一致。----------------------------------------------------------------------------------------------------------------
至此,共勉,如需转载请注明出处