`
MauerSu
  • 浏览: 513513 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

主从延迟

 
阅读更多


主从复制原理
主从延迟原因
主从延迟解决办法
参考资料
主从复制原理
mysql主库对所有DDL和 DML产生binlog(binlog顺序写),从库的Slave_IO_Running线程到主库取日志,Slave_SQL_Running执行DDL和DML。



主从延迟原因
当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,那么延时就产生了。具体来说,一个DDL卡主了,需要 执行10分钟,那么所有之后的DDL会等待这个DDL执行完才会继续执行,这就导致了延时。有一个直觉上的疑问是:一个DDL需要执行10分钟,主库从库执行DDL需要相同的时间,为什么从库会延时呢?答案是master可以并发,Slave_SQL_Running线程却不可以。主从复制都是单线程的操作。

主从延迟解决办法
1、 多线程。

具体有两个阶段:

第一阶段:MySQL 5.6版本引入并发复制(schema级别),基于schema级别的并发复制核心思想:“不同schema下的表并发提交时的数据不会相互影响,即slave节点可以用对relay log中不同的schema各分配一个类似SQL功能的线程,来重放relay log中主库已经提交的事务,保持数据与主库一致”。可见MySQL5.6版本的并发复制,一个schema分配一个类似SQL线程的功能。
第二阶段:实际生产中往往大多数或者全部的业务数据表都放在同一个schema下,在这种场景即使slave_parallel_workers>0设置也无法并发执行relay log中记录的主库提交数据。 高并发的情况下,由于slave无法并发执行同个schema下的业务数据表,依然会造成主备延迟的情况。MySQL 5.7 引入Enhanced Muti-threaded slaves,当slave配置slave_parallel_workers>0并且global.slave_parallel_type=‘LOGICAL_CLOCK’,可支持一个schema下,slave_parallel_workers个的worker线程并发执行relay log中主库提交的事务。要实现以上功能,需要在master机器标记binary log中的提交的事务哪些是可以并发执行。
2、降低从库安全性,加快速度。

将从库的sync_binlog设置为0
将从库的innodb_flush_log_at_trx_commit设置为2
sync_binlog 配置说明:

sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。

sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是最安全但是性能损耗最大的设置。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。

从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。

innodb_flush_log_at_trx_commit 配置说明:

默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据。


参考资料
https://yq.aliyun.com/articles/88925

http://www.cnblogs.com/cnmenglang/p/6393769.html

http://www.cnblogs.com/breg/p/3631921.html

  • 大小: 104.6 KB
分享到:
评论

相关推荐

    MySQL主从延迟现象及原理分析详解

    凌晨对线上一张表添加索引,表数据量太大(1亿+数据,数据量50G以上),造成主从延迟几个小时,各个依赖从库的系统无法查询数据,最终影响业务。 现在就梳理下主从延迟的原理。 二、原理 根据 MySQL 官方文档 MySQL ...

    MySQL5.6升级5.7时出现主从延迟问题排查过程

    在MySQL数据库系统中,主从延迟是一个常见的问题,特别是在版本升级过程中可能会更加突出。本文将深入探讨MySQL 5.6升级至5.7时遇到的主从延迟问题及其排查过程。 首先,我们要理解主从延迟的基本概念。在MySQL的...

    读写分离时主从复制的数据延迟如何处理

    然而,在这种模式下,由于网络延迟、系统负载等原因,主从库间可能存在数据同步延迟,这会给读写分离架构带来数据一致性问题。 处理读写分离时主从复制的数据延迟问题,关键在于识别延迟并制定合适的策略来应对。在...

    深入mysql主从复制延迟问题的详解

    然而,主从复制过程中可能会出现延迟问题,导致数据一致性受到影响。本文将详细探讨MySQL主从复制的实现原理和延迟问题。 首先,MySQL主从复制的核心在于三个关键进程:主服务器上的IO进程和从服务器上的SQL进程与...

    基于数据库中间件Mycat的MySQL主从与读写分离配置详解与示例

    主从状态监控是确保数据一致性的重要手段,Mycat通过定期检查主从延迟来确定是否健康。如果主从延迟过大,可能会影响数据的一致性,此时需要调整复制策略或者排查延迟原因。修复这个bug可能包括改进监控算法,提供更...

    MySQL主从镜像双机

    - 监控主从延迟:确保从服务器能及时同步主服务器的更新,避免数据不一致。 - 错误处理和故障切换:当主服务器出现问题时,可以迅速将从服务器提升为主服务器,但需注意数据完整性检查。 - 定期备份:即使有了主从...

    MySQL主从同步延迟的原因及解决办法

    MySQL主从同步是一种常见的数据库高可用性和读写分离策略,但在实践中可能会遇到主从延迟的问题。主从延迟主要由以下几个原因造成: 1. **单线程处理**:在早期版本的MySQL中,从服务器只有一个IO线程用于读取主...

    实例如何直接操作主从关系表

    - 注意主从延迟问题,确保业务逻辑能处理这种延迟可能导致的数据不一致。 - 在进行大规模数据操作时,如批量插入或更新,尽量在低峰时段进行,减少对主库的影响。 这个实例源码可能包含了创建数据库、设置主从...

    mysql主从同步搭建修改优化版.pdf

    - 监控主从延迟:`SHOW SLAVE STATUS\G`中的`Seconds_Behind_Master`字段。 - 定期检查主从数据一致性,确保无丢失或错误。 - 考虑使用GTID(Global Transaction Identifier)进行更精确的主从同步,避免因日志...

    20230517整理的mysql面试文档

    Seconds_Behind_Master 参数的值可以判断主从延迟的程度。 大数据量优化 对于大数据量的表,优化是非常重要的。以下是一些优化策略: * 表字段优化:not null,因为 null 值很难查询优化且占用额外的索引空间,...

    精心整理的140+道linux运维面试题分享给需要的同学

    46. Tomcat你做过哪些优化 47. nginx的session不同步怎么办 48. nginx的常用模块有哪些?...67. 主从延迟产生的原因及解决方案? 68. 判断主从延迟的方法 69. MySQL忘记root密码如何找回 70. MySQL的数据备份方式等...

    mysql主从复制延迟问题

    解决MySQL同步延迟.pdf

    【主从延迟】指的是从库相对于主库的更新存在滞后,这可能是由于各种因素造成的,例如网络问题、硬件性能、数据库配置或SQL语句的执行效率等。在本例中,延迟大约为7.5小时,由大约50个binlog文件的差距引起。 ...

    51_说说MySQL读写分离的原理?主从同步延时咋解决?.zip

    3. **监控与报警**:实时监控主从延迟,一旦超过预设阈值,及时进行报警和处理,避免业务受影响。 4. **读取策略调整**:采用“最近一次成功读”(Read-Committed)或“可重复读”(Repeatable Read)隔离级别,...

    整理了20道经典面试题和回答参考答案

    产生主从延迟的原因? 5.使用索引查询一定能提高查询的性能吗?为什么? 6.什么是最左前缀原则?什么是最左匹配原则? 7.什么是临时表,何时删除临时表? 8.使用 union 和 union all 时需要注意些什么?

    DB主从一致性架构优化4种方法

    **原理**:通过调整复制机制来减少因主从延迟导致的数据不一致现象。具体做法是在主库接收到写请求后,并不立即返回成功响应,而是等待数据同步至至少一个从库后才确认写操作完成并返回结果。 **优势**: - **简化...

Global site tag (gtag.js) - Google Analytics