Mysql主从延时

作者: tuser | 来源:发表于2020-08-25 17:28 被阅读0次

前言

很多公司都采用的Mysql主从架构,相信很多人困扰于主从延时问题,这篇文章就系统的讲述下Mysql主从延时问题。

  • Mysql主从同步原理
  • Mysql主从延时解决方案
  • Mysql主从延时过长

Mysql主从同步原理

从Canal官网抄个图


主从同步.png

大致流程如下:


mysql-主从流程.jpg

可以看出从master接到一个写请求到数据回放到从库的时间为T1+T2+T3,
主从延时的时间为T2+T3。一般来说这部分时间为200ms左右,这部分延时是无法避免的。这就导致一些写入立即读的场景可能得不到刚才变化的结果。比如,商家发布商品成功后,如果立即跳到已发布商品页,可能会查不到刚刚发布的商品。
这时商家可能会有很多问号。

Mysql主从延时解决方案

这种问题解决方案有三种:

  1. 产品交互做调整,在写请求后读操作前,加入一些拖时间的交互,以保证数据已经同步到从库。比如,商家发布商品后,弹出一个弹框(继续发布商品 or 去已发布商品页)。
  2. 强制读主库。这种方案看起来很low,但是我相信大部分公司都采用的这种方案,原因也很直白:简单呀!采用了这种方案也就意味着抛弃了从库的读扩展性。
  3. 选择性读主库。


    mysql选择性读主.jpg

棒!

Mysql主从延时过长

接下来,我们来分析主从同步延时时长远超预期的原因。我们知道主从延时时间T=T2+T3。网络延迟会导致T2过长,这种情况比较少,而且不是我们讨论的重点,就一笔带过了。实际上我们遇到的大多数情况是T3过长。T3耗时主要在Relay log回放数据这一步。可能原因如下:
1. 从库机器配置比主库低
从库的压力其实比主库更大。因为从库除了执行主库执行的全部写操作外,还要处理读请求。

  1. 从库读压力过大
    如果机器配置一样,主从延时还是过长,那么有可能是从库读压力过大,占用过多服务器资源。可以增加从库分担压力。
  2. 大事务
    这个也很好理解,一个事务在主库需要执行五分钟的话,在从库回放时也需要五分钟。延时也就会增加五分钟。
  3. 存在长时间持有exclusive metadata lock的操作
    最典型的就是大表DDL。大表DDL一般耗时较长,执行期间会阻塞读请求。
    关于大表DDL参考我的另一篇文章数据库扩展

相关文章

  • Mysql主从延时

    前言 很多公司都采用的Mysql主从架构,相信很多人困扰于主从延时问题,这篇文章就系统的讲述下Mysql主从延时问...

  • mysql主从延时

    二,主从延时问题的原因分析及处理 2.1什么是主从延时? 主库发生了操作,从库很久才跟上来(超过10s) 2.2 ...

  • MySQL XtraBackup & Replication D

    问题 数据库备份期间主从延时 MySQL: percona-server-5.6.25-73innobackupe...

  • MySQL主从延时问题

    最近发现了一个主从相关的问题,在这里记录一下。一、背景:在业务过程中产生的财务数据需要发送给财务团队。然后公司已经...

  • MySQL-lesson9--主从复制高级进阶

    MySQL-lesson9--主从复制高级进阶 1. 延时从库 1.1介绍 1.2 为什么要有延时从 1.3 配置...

  • MySQL主从复制 - 延时

    本文的示例代码参考replication/delay.py 目录 容器 主从主数据库从数据库主从复制 延时 容器 ...

  • MySQL主从同步

    MySQL主从同步(一)——原理详解 一、MySQL主从同步简介 MySQL主从同步,即MySQL Replica...

  • mysql-主从复制故障/主从延时/从库延时

    1 线程相关监控 主库: 从库: 主从复制故障分析 1. IO 连接主库 处理方法 主库连接数上线,或者是主库太繁...

  • mysql主从复制延时问题

    不知道从哪一年搞过数据库主从复制的事情了,为了减轻数据库的瓶颈,采用数据库采用的服务架构是: 当然实际使用时候...

  • 主从:MySQL设置主从同步基础设置

    MySQL主从同步机制 MySQL主从同步是在MySQL主从复制(Master-Slave Replication...

网友评论

    本文标题:Mysql主从延时

    本文链接:https://www.haomeiwen.com/subject/prcnjktx.html