开发者社区> 像教授> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MySQL主从复制一致性检测

简介:
+关注继续查看

在MySQL主从复制过程中,常常需要对某些重要的表进行一致性检查。

    由于主从数据在同步时存在一定的延迟,因此直接读取服务器数据的方式无法严格保证信息的一致性。在数据在同步完全结束之前,一直处于不断变化且并不完整的状态下。锁表的可能实现这个问题,但是性能又是需要考虑的。能对数据验证是最好的。MySQL的CHECKSUM TABLE指令对于小型列表来说完全够用,但规模庞大的列表往往需要“分块”处理,避免在校验过程中造成负载过高。
 
    Percona工具Pt-table-checksum 是不锁表的。
    基本语法: 
    Pt-table-checksum   [options]  [DSN]
    举例:
    pt-table-checksum   --databases=monster --tables=abc --replicate-check    h=192.168.1.186,u=chk,p=XXXX,P=3308
    这个工具是通过在master上执行一些 checksum queries 主要是使用CRC32函数来实现 可以参考 --funcion 参数,这个是最易于计算的,来检查主从复制的一致性,并将结果打印。如果主从数据不一样的话,会产生不一样的结果。
 
    缺点:可能会增加服务器负载。
    --explain 选项的时候,可以查看到工具是如何校验数据表的。
该工具在master上执行一些 checksum queries ,然后会复制到slave上。
同一时间它只会在一个表上进行操作,所以不会在开始之前做大量的工作,也不许积累太多的内存。
    
    它能够在较大型的表上快速工作的原因是: it divides each table into chunks of rows。利用REPLACE..SELECT query来对每个chunk进行校验。而且它会动态调整chunk sizeThe tool keeps track of how quickly the server is able to execute the queries, and adjusts the chunks as it learns more about the server’s performance. 它使用一个指数衰减的加权平均保持稳定的块大小)。这样做避免了整个语句在表上运行一次。这样可以降低主从复制延迟的可能性。 在每个chunk上进行校验时,超时时间为0.5S
 
    动态调整chunk size 的大小用到的是一种叫做:’ nibbling’的技术。它会优先利用主键或者非唯一主键来进行分块或者其他的主键,如果没有索引的话,而且表不是很大的话,表会被氛围一个chunk。
 
    该工具不会影响数据库的任何操作,包括复制。(就是不锁表的意思)pt-table-checksum detects replicas and connects to them automatically。当复制延迟太多的时候,该工具会自动暂停,直到slave 与master同步。如果复制失败的话,pt-table-checksum pauses and waits.并且不会有任何输出。
 
    工具在执行的时候,它会执行一个explain在每个chunk上,如果太大的话,它会跳过。可以通过 –chunk-size-limit 进行限制。 If a table will be checksummed in a single chunk because it has a small number of rows, pt-table-checksum additionally verifies that the table isn’t oversized on replicas 该工具会验证在slave上这个表不会太大。这个可以避免在master 上表时空的,但是在slave上这个表很大。
 
    有多种方式保证master负载不会太高。pt-table-checksum sets its session-level innodb_lock_wait_timeout to 1 second, so that if there is a lock wait, it will be the victim instead of causing other queries to time out. 。负载过大,他会pause。pt-table-checksum will pause if there are more than 25 concurrently executing queries. You should probably set a sane value for your server with the --max-load option
 
    如果pt-table-checksum 意外停止  可以使用—resume 选项重启。
 
     After pt-table-checksum finishes checksumming all of the chunks in a table, it pauses and waits for all detected replicas to finish executing the checksum queries. Once that is finished,  it checks all of the replicas to see if they have the same data as the master, and then prints a line of output with the results. It will also print a progress report when it pauses to wait for replication to catch up, and when it is waiting to check replicas for differences from the master
    如果使用 --replicate-check-only 这个选项的话,只有不同的检测结果才会打印出来。





本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/976545,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
安装 MySql | 学习笔记
快速学习安装 MySql。
50 0
windows 10 下 mysql的安装
win10下 mysql的安装 今天在win10下装Mysql,总结一下安装详细过程: 1、下载【先进入官网: https://www.mysql.com/】(按照如下截图一步一步执行即可)           2、安装 下载出来的会是一个压缩包,解压到你打算安装的目录下边(不像图形化界面安装那样还需要点击一系列【next】),但是离完全安装成功,现在才是刚刚开始。
1563 0
mac下安装mysql
mac下安装mysql 根据我的自身经验来看,windows、liunx、mac这三个平台来看,mac上安装到正常运行是最耗我时间的。因此纪录下来,下次遇到有地方可查。 1、mysql下载安装: https://dev.mysql.com/downloads/mysql/ 这里要注意的是,最好安装和你系统匹配的版本,不然后续可能会遇到一些奇怪的错误。
4278 0
Mac上安装MySQL
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/73824618 本篇文章没有技术含量,重在传播。
590 0
Windows 10下mysql 64位 安装(mysql-5.7.11-winx64安装)
Windows下mysql 64位 安装(mysql-5.7.11-winx64安装) 系统Windows10 安装包mysql-5.7.11-winx64.zip 安装过程中遇到的问题,请留意4.0常见问题汇总,常见问题都可解决。 附上最近一次完成安装记录,给大忙人看的只有两张图和完整的命令。 完成的命令 C:\Windows\syst
2562 0
Mac下安装MySQL
2015-07-13 15:10:32 Mac下用homebrew安装软件还是很方便的 brew install mysql 等待一会儿安装完毕后到安装目录:  /usr/local/Cellar/mysql/5.
760 0
MAC下homebre安装mysql
1.执行安装命令 brew install mysql 2.执行完输入mysql会有如下bug ERROR 2002 (HY000): Can not connect to local MySQL server through socket '/tmp/mysql.sock' (2) 3.bug解决方案 unset TMPDIR 4.然后 mysql_install_db --verbos
847 0
+关注
1338
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载