首页 » 服务器工具 » MySQL » 正文

Percona Toolkit 主从一致性检查和修复

简介

pt-table-checksum是一个在线验证主从数据一致性的工具,主要用于以下场景:
1.数据迁移前后,进行数据一致性检查
2.当主从复制出现问题,待修复完成后,对主从数据进行一致性检查
3.把从库当成主库,进行数据更新,产生了”脏数据”
4.定期校验

percona-toolkit使用方便,安装到任意一台可以连接主从数据库的服务器上即可。


一、percona-toolkit 安装

1.安装依赖

yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes perl perl-DBI perl-Digest-MD5 -y

2.安装RMP包

wget https://www.percona.com/downloads/percona-toolkit/2.2.7/RPM/percona-toolkit-2.2.7-1.noarch.rpm
rpm -ivh percona-toolkit-2.2.7-1.noarch.rpm

二、pt-table-checksum 检查一致性工具使用

举例:
Master 192.168.1.101
Slave 192.168.1.102

pt-table-checksum \
--nocheck-binlog-format \
--nocheck-plan \
--nocheck-replication-filters \
--recursion-method=dsn=D=database,t=dsns,h=192.168.1.102 \
--databases=database \
--tables=table \
--replicate=database.checksums \
-uroot \
-ppassword \
-h192.168.1.101

–nocheck-binlog-format #不检查复制的binlog模式,要是binlog模式是ROW,则会报错。
–nocheck-plan #不检查查询执行计划的安全性
–nocheck-replication-filters #不需要检查 Master 配置里是否指定了 Filter
–recursion-method=dsn=D=database,t=dsns,h=192.168.1.102 #以递归树方法检查指定数据库:dsn=链接方式,D=数据库,t=类型,h=要检查的从库。如果检查所有从库设置值processlist
–databases=database #要检查的数据库,多个用半逗号分隔
–tables=table #要检查的表,多个用半逗号分隔
–replicate= #检查结果存放的 数据库.表
-u #master 用户名
-p #master 密码
-h #master 地址


三、pt-table-sync 修复错误数据

pt-table-sync \
--nocheck-slave \
dsn=u=root,p=password,h=192.168.1.101,P=3306 \
--databases=database \
--replicate=database.checksums \
--print \
--verbose \
--execute

–nocheck-slave 如果你的表包含唯一索引,你应该使用–sync-to-master和 / 或–replicate选项来同步slave到其master。这通常会做正确的事情。当表上没有唯一索引时,除了在slave上修改数据别无选择,pt-table-sync会发现你想这么做。除非你指定–no-check-slave选项,否则它会发出报错然后死掉。
dsn=数据库连接设置,多个可重复配置
–databases 数据库名
–replicate=检查日志表
–print 输出过程内容
–verbose 输出不一致表信息
–execute 执行修改,建议先不加执行进行测试

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据