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

来源:互联网 发布:java se8.0 编辑:程序博客网 时间:2024/06/05 03:33
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数据库主从数据一致性的校验和恢复,可针对特定的数据库数据表进行校验恢复。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝吃药伤胃了怎么办 胃胀胃痛怎么办快速解决方法 半夜2点3点胃疼怎么办 晚上吃多了胃疼怎么办 骨折打石膏后痒怎么办 脚脖子崴了肿了怎么办 喝酒喝的吐血了怎么办 感冒后咳嗽有痰怎么办 嗓子里老是有痰怎么办 物业把水停了怎么办 机洗衬衫缩水了怎么办 羊绒大衣洗缩水了怎么办 棉质衣服缩水了怎么办 衣服洗了变小了怎么办 毛衣洗后缩水了怎么办 鼻子又大又塌怎么办 苹果6被停用了怎么办 苹果6s手机停用怎么办 苹果4手机已停用怎么办 苹果手机5停用了怎么办 老公被骗300多万怎么办 苹果手机被抹除怎么办 钓鱼邮件点开了怎么办 幼犬吃多了拉稀怎么办 幼犬半夜醒了叫怎么办 相爱相杀的感情怎么办 冬天玩电脑手冷怎么办 被陌生人骗了钱怎么办 被网上骗了钱怎么办 20岁欠了10万怎么办 我赌博欠了10万怎么办 孩子见到生人不爱说话怎么办 18岁了个子矮小怎么办 1岁宝宝个子矮70怎么办 喋血街头2进监狱怎么办 360云盘收费了怎么办 头脑不清醒晕沉怎么办 一岁宝宝还不会走路怎么办 2岁宝宝受凉呕吐怎么办 3岁宝宝受凉呕吐怎么办 1岁宝宝受凉呕吐怎么办