MySQL主从复制一致性检测

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

在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 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  --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的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
19天前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
|
1月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
107 1
|
13天前
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
MySQL主从复制原理和使用
|
6天前
|
缓存 NoSQL 关系型数据库
mysql和缓存一致性问题
本文介绍了五种常见的MySQL与Redis数据同步方法:1. 双写一致性,2. 延迟双删策略,3. 订阅发布模式(使用消息队列),4. 基于事件的缓存更新,5. 缓存预热。每种方法的实现步骤、优缺点均有详细说明。
|
13天前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
Mysql中搭建主从复制原理和配置
|
2月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
329 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
2月前
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
98 6
|
2月前
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
62 1
|
2月前
|
关系型数据库 MySQL Java
MySQL主从复制实现读写分离
MySQL主从复制(二进制日志)、 Sharding-JDBC实现读写分离
MySQL主从复制实现读写分离
|
2月前
|
缓存 NoSQL 关系型数据库
MySQL与Redis缓存一致性的实现与挑战
在现代软件开发中,MySQL作为关系型数据库管理系统,广泛应用于数据存储;而Redis则以其高性能的内存数据结构存储特性,常被用作缓存层来提升数据访问速度。然而,当MySQL与Redis结合使用时,确保两者之间的数据一致性成为了一个重要且复杂的挑战。本文将从技术角度分享MySQL与Redis缓存一致性的实现方法及其面临的挑战。
138 2