设为首页 收藏本站
查看: 1933|回复: 2

[经验分享] mk-table-checksum -- mysql主从数据一致性校验工具

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-9-4 08:48:54 | 显示全部楼层 |阅读模式
做了m/s的mysql,特别是用于备份和读写分离的业务时,定期做主从数据一致性检查就应该是必须的。有时候不做不知道,做了吓一跳...谁也不想辛辛苦苦从slave备份出来的数据到最后只是一堆数据垃圾。目前发现比较好用的工具就只有一个,maatkit的mk-table-checksum。

  这个工具其中一种实现模式的最最简单原理就是,在master中校验指定库或者表或者全部库表,把结果存在自己创建的一个库表里,然后通过主从复制,相关的检验sql会传到slave上再执行一次,最后比较主从的检验值即可知道数据是否一致。这种模式的好处是利用主从复制来做检验,不需要在检验期间对主从数据库同时锁表,而且可以控制校验的数据和速度,使这个操作不至于影响到正常的服务。更详细的原理可以猛击这里(http://www.maatkit.org/doc/mk-table-checksum.html)来查看官方文档。

 工具的使用还是需要一些的设置:

  1. 安装maatkit
  我现在使用的是:maatkit-6926.tar.gz,已经有更新的版本了,但还没时间测试。安装时缺什么perl模块就装什么模块,最主要是DBI和DBD-mysql这两个perl模块。安装详情可看官网。
  2. 设置用户和权限
  创建一个用户,例如monitor,在master上授权:
    grant select,process,replication slave on *.* to monitor@'localhost' identified by 'xxxxxx';
  设置这几个权限都是按功能需要添加,具体就不解释,尝试一下就知道。

  在slave上授权:
    grant replication slave,replication client,select,process on *.* to monitor@'master的IP' identified by 'xxxxxx';
  3. 创建一个存储检验数据用的库,名字自定义,例如:monitor。并授权monitor用户操作此库的所有权限:
    grant all on monitor.* to monitor@'localhost' ;
  4. 基本到这一步就可以开始做检验了,mk-table-checksum这个脚本的使用方法官网的e文讲得灰常清楚简洁,所以我不啰嗦。我常用的参数是:
    mk-table-checksum --replicate=monitor.checksum --empty-replicate-table --create-replicate-table --recursion-method=hosts --sleep 5 h=localhost,u=monitor,p=xxxxxx --nocheck-replication-filters
  --replicate :指定检验数据存放的库和表
  --empty-replicate-table:检验前先清空以前的检验数据
  --create-replicate-table:存放检验数据的表如果不存在,则自动创建
  --recursion-method:查找slave的方式,有hosts和processlist两种。前者是用show slave hosts来查找,这种方式适合服务器的端口和socket之类的不使用默认参数的情况;后者是用show processlist来查找。
  --sleep:每检验完一个chunk或者一个表时停顿多少秒,这个可以减轻机器繁忙时锁表的情况和降低系统负载
  h=xx,u=xx,p=xx:登录master的参数
  --nocheck-replication-filters:6924这个版本才开始有的参数,mk-table-checksum检验前会检查slave是否存在ignore某个库或者表的情况,如果有出于安全考虑就会停止检验(是什么安全问题你懂的),除非添加上这个参数,忽略掉警告。
  当然我上面的命令是对全部数据库做检验,另外还有一些常用的参数,例如,--chunk-size, --databases, --tables, 以及它们的正则参数等等,更多的参数还是看看官档或者--help一下。
  5. 检验完之后在master上检查一下结果即可:
   mk-table-checksum --replicate=monitor.checksum --recursion-method=hosts --replicate-check 1 h=localhost,u=monitor,p=xxxxxx --nocheck-replication-filters
  如果无任何结果返回,则表示主从数据是一致的,如果有结果返回,恭喜,当然就是有问题啦。



参考资料[1].maatkit官方文档http://www.maatkit.org


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-8928-1-1.html 上篇帖子: mysql 5.6 的主从复制 下篇帖子: mysql dba系统学习(1)mysql各版本编译安装 mysql

尚未签到

发表于 2013-10-25 07:10:19 | 显示全部楼层
微机原理闹危机,随机过程随机过,实变函数学十遍,汇编语言不会编!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-21 01:42:27 | 显示全部楼层
____夜。静。静悳害怕。心。疼。疼悳莫名其妙。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表