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

lonuve lonuve     2022-12-19     576

关键词:

一、现象

凌晨对线上一张表添加索引,表数据量太大(1亿+数据,数据量50G以上),造成主从延迟几个小时,各个依赖从库的系统无法查询数据,最终影响业务。

现在就梳理下主从延迟的原理。

二、原理

根据 MySQL 官方文档 MySQL Replication Implementation Details 中的描述,MySQL 主从复制依赖于三个线程:一个线程(),两个线程(和)。主从复制流程如下图:

技术图片

master 服务器和 slave 服务器连接时,创建以发送数据:

  • 一个对应一个 slave 服务器;

  • 从获取数据时会加锁,获取到数据后,立即释放锁。

当 slave 服务器收到 START_SLAVE 命令时,会创建和:

  • 以拉的方式,从 master 读取事件,并存储到 slave 服务器的中;

  • 从中读取事件并执行;

  • 可以按照自己的节奏读取和更新数据,也可以随意操作复制进程(启动和停止)。

注: 命令成功启动线程后,如果后面或因为某些原因停止,则不会有任何的警告,业务方无法感知。可以通过查看 slave 的 error 日志,或者通过 SHOW SLAVE STATUS 查看 slave 上的线程状态。

通过 SHOW PROCESSLIST 可查看线程状态:

Binlog dump thread:

I/O thread 和 SQL thread:

三、分析

根据上面的原理,由于是单线程()读取数据,单线程()更新数据,而是多线程写入,那么只要写入的频率大于读取更新的频率,就有可能出现主从延迟的情况,如:

  1. 写入较高,大于更新速度;

  2. 执行某些语句耗时较长,如持有锁等;

  3. 执行某些语句时,执行的时间较长,在也执行相同的时间;

此处创建了索引,咨询 DBA,产生的文件有100多G,数据量太大,导致从库一直读取操作产生的事件,而影响到正常的业务事件的更新,从而表现为主从同步延迟。

四、解决方案

从主从延迟的原因来看,解决方案可以从以下几个方向入手:

  1. 业务选型,对于无法忍受从库延迟的架构,可选择分布式架构等,避开从库延迟问题

  2. 执行时间,对大表进行线上操作尽量选择凌晨等业务量较小的时候

  3. 硬件配置,升级从库硬件配置,如SSD

  4. 减少请求,增加缓存层,减少读请求落库

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。

mysql并行复制方案演进历史及原理分析(代码片段)

...将出版,敬请关注!有线上MySQL维护经验的童鞋都知道,主从延迟往往是一个让人头疼不已的问题。不仅仅是其造成的潜在问题比较严重,而且问题的定位尤其考量DBA的综合能力:既要熟悉复制的内部原理,又能解读主机层面的... 查看详情

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

MySQL主从延迟原因以及解决方案:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5.6版本之前),主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高。slave的S... 查看详情

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

MySQL主从延迟原因以及解决方案:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5.6版本之前),主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高。slave的S... 查看详情

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

MySQL主从延迟原因以及解决方案:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5.6版本之前),主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高。slave的S... 查看详情

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

MySQL主从延迟原因以及解决方案:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5.6版本之前),主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高。slave的S... 查看详情

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

MySQL主从延迟原因以及解决方案:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5.6版本之前),主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高。slave的S... 查看详情

导致mysql主从延迟的原因和现象

主从延迟监控showslavestatus方式可以看到很多主从相关值Seconds_Behind_Master值每个事务的binlog里面都有一个时间字段,用于记录主库上写入的时间;备库取出当前正在执行的事务的时间字段的值,计算它与当前系统时间的差值,得到... 查看详情

半万字长文学习mysql主从复制原理,面试必问,建议收藏!(代码片段)

快速导航一、主从复制到底是啥1、一张图过程2、新的备库与主库同步方法3、复制配置二、主从复制有什么用1、数据备份2、负载均衡3、高可用性和故障切换4、MySQL升级测试三、复制原理有2个1、基于语句的复制:2、基于行... 查看详情

半万字长文学习mysql主从复制原理,面试必问,建议收藏!(代码片段)

快速导航一、主从复制到底是啥1、一张图过程2、新的备库与主库同步方法3、复制配置二、主从复制有什么用1、数据备份2、负载均衡3、高可用性和故障切换4、MySQL升级测试三、复制原理有2个1、基于语句的复制:2、基于行... 查看详情

mysql主从延迟原因以及解决方案

MySQL数据库主从同步延迟原理。MySQL数据库主从同步延迟是怎么产生的。MySQL数据库主从同步延迟解决方案。MySQL数据库主从同步延迟产生的因素。1.MySQL数据库主从同步延迟原理。答:谈到MySQL数据库主从同步延迟原理,得从mysql... 查看详情

mysql主从同步延迟717秒?!!

原标题:MySQL主从同步延迟717秒?!!最近业务MySQL主从监控刚加好,随后总收到延迟几百秒的告警,但实际排查下来却没有大碍,告警信息如下:网上找下来也有人遇到同样的问题,(但这个问题属于MySQL的BUG还是zabbix的BUG呢?... 查看详情

mysql主从同步延迟717秒?!!

原标题:MySQL主从同步延迟717秒?!!最近业务MySQL主从监控刚加好,随后总收到延迟几百秒的告警,但实际排查下来却没有大碍,告警信息如下:网上找下来也有人遇到同样的问题,(但这个问题属于MySQL的BUG还是zabbix的BUG呢?... 查看详情

mysql主从同步延迟717秒?!!

原标题:MySQL主从同步延迟717秒?!!最近业务MySQL主从监控刚加好,随后总收到延迟几百秒的告警,但实际排查下来却没有大碍,告警信息如下:网上找下来也有人遇到同样的问题,(但这个问题属于MySQL的BUG还是zabbix的BUG呢?... 查看详情

mysql主从复制详解(代码片段)

前言:在MySQL中,主从架构应该是最基础、最常用的一种架构了。后续的读写分离、多活高可用架构等大多都依赖于主从复制。主从复制也是我们学习MySQL过程中必不可少的一部分,关于主从复制的文章有很多,笔者也来凑凑热... 查看详情

mysql主从同步--原理及实现

1、什么是mysql主从同步?当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。2、主从同步有什么好处?水平扩展数据库的负载能力。容错,高可用。Failover(失败切换)/HighAvailability数据备份。3、主从同步的原理... 查看详情

mysql主从同步--原理及实现

1、什么是mysql主从同步?当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。2、主从同步有什么好处?水平扩展数据库的负载能力。容错,高可用。Failover(失败切换)/HighAvailability数据备份。3、主从同步的原理... 查看详情

mysql主从同步--原理及实现

1、什么是mysql主从同步?当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。2、主从同步有什么好处?水平扩展数据库的负载能力。容错,高可用。Failover(失败切换)/HighAvailability数据备份。3、主从同步的原理... 查看详情

mysql主从同步--原理及实现

1、什么是mysql主从同步?当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。2、主从同步有什么好处?水平扩展数据库的负载能力。容错,高可用。Failover(失败切换)/HighAvailability数据备份。3、主从同步的原理... 查看详情