Mysql 主从一致性检测
目录
原理
指令介绍
pt-table-checksum
pt-table-sync
需要安装的依赖包[centos7] yum -y install perl-Digest-MD5 perl-DBI perl-DBD-MySQL --nogpgcheck --disablerepo mysql80-community --enablerepo mysql57-community
原理
将一张大表分成多个chunk,每次针对一个chunk进行校验,同时将校验的结果通过REPLACE INTO语句写入到percona.checksums表中,然后该语句通过主从复制,在SLAVE中同样执行一次,校验的结果同样是写入到percona.checksums表中,最后,通过查询percona.checksums来获取主从不一致的信息。
指令介绍
pt-table-checksum
pt-table-checksum --set-vars innodb_lock_wait_timeout=120 u=remote,p=wangxia@123,h=192.168.96.157,P=3306 --no-check-binlog-format --quiet --set-vars innodb_lock_wait_timeout=120 设置变量,innodb锁等待两分钟 -h remote 主库ip -p 主库密码 -u 主库用户 -P 主库端口 --no-check-binlog-format pt-table-checksum默认是运行在statement下,如果是其它日志格式,需加--no-check-binlog-format参数 --quiet 输出静默 pt-table-checksum --set-vars innodb_lock_wait_timeout=120 u=remote,p=wangxia@123,h=192.168.96.157,P=3306 --no-check-binlog-format --replicate-check-only --replicate-check-only 如果指定了--replicate-check-only参数,则意味着不会校验任何表,直接获取上次校验的结果。
pt-table-sync
pt-table-sync --execute --print --charset=utf8 --replicate=percona.checksums h=192.168.96.157,u=remote,p=wangxia@123 --execute 恢复数据到从库 --print 打印sql --charset 指定字符集 --replicate 指定记录差异的库表,会自动创建,mariadb为test.checksums