centos7.2 percona-toolkit进行mysql主从数据一致性校验+修复

percona-toolkit是一组高级的管理mysql的工具集,可以用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,在生产环境中能极大的提高效率,安装也很简单。常被用于mysql数据库的主从数据一致性的校验和修复,而且不影响正常使用,在生产环境中校验主从数据一致性。
下面记录一下,percona-toolkit的安装和对数据库的主从数据一致性的校验。


一:安装
## 安装percona-toolkit工具的依赖包
$ yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL -y


## 官网下载最新版的rpm包,然后yum本地安装,自动解决依赖等问题,最好这样安装。
$ wget https://www.percona.com/downloads/percona-toolkit/3.0.4/binary/redhat/7/x86_64/percona-toolkit-3.0.4-1.el7.x86_64.rpm
$ yum install percona-toolkit-3.0.4-1.el7.x86_64.rpm


二:使用
校验数据一致性使用到的工具命令为:pt-table-checksum
在主库的服务器上操作,进行校验。会自动识别读取所有从库。


## 使用方法:
$ pt-table-checksum h='192.168.9.93',u='root',p='123456',P=3306 --nocheck-replication-filters --nocheck-binlog-format [-d dbname] [--recursion-method=dns=...] [--replicate=test.checksum]


##[]里的内容,根据实际情况进行取舍,由于我们这里校验的mysql主从都是同一个端口,所以可以直接用默认的检查方式,工具自动识别从库。且上述语句为全库的检验。
## 参数意义:
-h,-u,-p,-P 主库连接信息
--nocheck-replication-filters     忽略replication-do-db规则
--nocheck-binlog-format    忽略binlog格式检查,默认被检查的主从binlog_format必须为statement。
-d 指定进行校验的数据库,不加则默认全部库
--replicate 指定将校验结果保存在哪个库哪个表,不加的话,默认创建percona库checksum表来保存
--recursion-method 指定复制检查的方式,默认情况下使用PROCESSLIST,如果非标准的3306端口,就使用 SLAVE HOSTS的方式,推荐使用dsn方式,手动指定
--replicate-check-only 不运行检验,只通过数据库的检验数据,输出不一致的数据信息。


## 查看校验结果,有两种方法:
第一种,将刚才执行的检验的语句后面加上参数--replicate-check-only。然后再执行一次。输出不一致信息:
------------------------------------------------------------------------------------------------------
Differences on izwz9cq7izzpwm6e9okz6qz
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
mysql.user 1 -1 1   
------------------------------------------------------------------------------------------------------


第二种,直接在从库上运行语句查询:
mysql> select db, tbl, sum(this_cnt) as total_rows, count(*) as chunks  
from checksums 
where ( master_cnt <> this_cnt OR master_crc <> this_crc OR isnull(master_crc) <> isnull(this_crc) )
group by db, tbl;




## 校验了差异后,就是进行恢复数据一致性,在主库上进行,推荐先--print出来恢复执行的sql语句,看一下,没什么问题,再进行--execute执行语句。
$ pt-table-sync --print [--execute]--sync-to-master h=192.168.9.94,P=3306,u='root',p='123456' [--databases=newtables] [--tables=tb1]


参数意义:
--print 打印恢复sql语句
--execute 执行恢复sql语句
--sync-to-master 指定一个从库的IP,会自动从库上找主库。
-d/--databases 指定数据库
-t/--tables 指定表




OK。到此,就完成了mysql数据库主从数据一致性的校验和恢复,可针对特定的数据库数据表进行校验恢复。

你可能感兴趣的:(Centos7系列,centos7,percona-toolkit,mysql主从一致性)