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

由于主从数据在同步时存在一定的延迟,因此直接读取服务器数据的方式无法严格保证信息的一致性。在数据在同步完全结束之前,一直处于不断变化且并不完整的状态下。锁表的可能实现这个问题,但是性能又是需要考虑的。能对数据验证是最好的。MySQL的CHECKSUM TABLE指令对于小型列表来说完全够用,但规模庞大的列表往往需要“分块”处理,避免在校验过程中造成负载过高。

Percona工具Pt-table-checksum 是不锁表的。

基本语法:

Pt-table-checksum [options] [DSN]

举例:

pt-table-checksum--databases=monster --tables=abc --replicate-checkh=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 size(The 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 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

mysql 主从同步检查_MySQL主从复制一致性检测相关推荐

  1. mysql主从同步触发器_Mysql 主从复制触发器问题

    Statement-based With statement-based replication, triggers executed on the master also execute on th ...

  2. mysql 主从同步权限_MYSQL 主从同步详解

    关于MYSQL主从同步 什么是MYSQL的主从复制 主从复制是指将一个服务器作为主服务器,所有的数据更新操作都在主服务器进行,并且将主服务器的数据同步到一个或多个从服务器,保证从服务器和主服务器的数据 ...

  3. mysql主从同步原理_mysql主从同步以及原理

    mysql主从复制介绍 当前的生产工作中,大多数应用的mysql主从同步都是异步的复制方式,即不是严格实时的数据同步. 实时和异步: 同步复制: 指的是客户端连接到MySQL主服务器写入一段数据,My ...

  4. mysql 主从的作用_MySQL主从复制作用和原理

    什么是主从复制 主从复制是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是准实时的业务数据库. 主从复制的作用 做数据的热备 作为后备数据库,主数据库故障后,可切换到从数据库继 ...

  5. mysql 主从同步 速度_MySQL主从同步延迟原因及解决办法

    MySQL主从同步延迟原因及解决办法 MySQL主从延迟原因以及解决方案: 谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysq ...

  6. mysql+主从同步端口_MySQL主从同步配置

    MySQL主从同步 1. 主从同步的定义 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave).因为复 ...

  7. mysql 主从同步恢复_MySQL主从同步错误恢复

    MySQL主从同步集群在生成环境使用过程中,如果主从服务器之间网络通信条件差或者数据库数据量非常大,容易导致MySQL主从同步延迟. MySQL主从产生延迟之后,一旦主库宕机,会导致部分数据没有及时同 ...

  8. mysql 主从同步 工具_mysql主从同步工具maatkit安装

    Maatkit是非常不错的mysql管理工具,网络评价非常不错.包含以下主要工具: 1.mk-table-checksum 检查主从表是否一致的有效工具 2.mk-table-sync 有效保证表一致 ...

  9. mysql主从配置常见问题_mysql 主从复制配置,以及常见问题解决!

    一:我的mysql 5.7.15   ,系统是centos6.5 主从复制配置步骤: 瞅清楚!配置不要出错!! 二:遇到的问题 Got fatal error 1236 from master whe ...

最新文章

  1. promise ajax 队列,ES6中的promise,从使用promise封装ajax说起
  2. Ring0和Ring3权限级
  3. 购物中心潮--我的创业之路
  4. .Net Core微服务入门全纪录(完结)——Ocelot与Swagger
  5. 【剑指offer】十九,数组中出现次数超过一半的数字
  6. 课时85.层叠性(掌握)
  7. 【软件开发底层知识修炼】二十六 ABI-应用程序二进制接口 学习总结文章目录
  8. 麦肯锡在全球调研分析160个案例,给出5个行业的34个AI应用场景
  9. python pdf转html代码_python将html转成PDF的实现代码(包含中文)
  10. JAVA 设计模式 迭代器模式
  11. 计算机excel素材,excel操作练习题素材.doc
  12. 爬取菜鸟教程Python100例
  13. 密码学基础部分大归纳(密码学发展史,对称、非对称密码算法,数字签名、数字证书)
  14. Spring Bean 生命周期
  15. python弹出窗口的代码_Python+selenium(7)-弹出窗口的代码封装,PythonSelenium,七,弹窗...
  16. FAT32文件系统格式详解(图文针对具体文件存储,分析fat32 SD卡)
  17. 【C/C++】多线程中的几种锁
  18. 苹果屏幕上的小圆点_原来苹果手机内置录屏功能,简单设置就打开,好多人没发现!...
  19. 猫加路由加服务器加交换机怎么配置文件,猫和路由器以及交换机的连接方法[图解]...
  20. 一个C#开发者用Java搭建Android框架的心路历程

热门文章

  1. 前端开源项目周报0425
  2. 2016企业开发趋势:Lightbend关于JVM开发者的调查
  3. android152 笔记 2
  4. PHP中把stdClass Object转array的几个方法
  5. solrj 使用记录 - 添加文档
  6. 利用ASP.NET生成静态页面
  7. linux shell sshpass 远程服务器 批量修改密码
  8. linux fuser 命令 查看文件/网络端口 被什么进程占用
  9. redis启动问题:/var/redis/run/redis_6379.pid exists, process is already running or crashed
  10. python3 bytes与hex字符串互转