本文作者:kris

部署MySQL延迟从库的好处小结-mysql从库延迟优化

kris 2025-01-15 09:18:04 2
部署MySQL延迟从库的好处小结-mysql从库延迟优化摘要: 什么情况会导致MySQL主从复制延迟?原因主要就是io,网络,和cpu,一搬cpu不会跑的太满,主要还在网络和io上,因为是读日志,一定会出现延时,就看这个延时是否接受,业务场景如...

什么情况会导致MySQL主从复制延迟?

原因主要就是io,网络,和cpu,一搬cpu不会跑的太满,主要还在网络和io上,因为是读日志,一定会出现延时,就看这个延时是否接受,业务场景如果对延时不敏感,可以从slave读取,如果是敏感,就可以控制从master读,以免延时带来读脏数据的问题

主从复制有两个线程,sql和io。前者负责sql的复制,后者负责写入。所以就是从两方面看,当网络比较差,或者带宽受限,或者master cpu过于繁忙导致binlog传输速度跟不上,或者slave机器的io性能较差,都容易导致主从复制延迟。可以通过show slave status的一些参数看出来,大概是xx_behind_master。mysql的主从其实问题很大,设计的比较low。至少三年多没跟过mysql了,不知道这方面有没有什么改进。

  1. 问题描述的是DBA进行DDL操作(即索引合并)后就出现了复制延迟。

    部署MySQL延迟从库的好处小结-mysql从库延迟优化

    图片来源:网络

  2. 这里可能的原因是:执行DDL需要一段时间,由于MySQL传统复制是异步复制,需要等到主库执行完成后才会将DDL语句传输到从库,在从库应用。所以出现了主从延迟,这种情况的延迟时间基本跟DDL在主库的执行时间吻合。
  3. 判断方法:可以通过对比主从延迟时间和主库执行DDL时间来判读是否是这个原因。
  4. 另附上MySQL传统主从复制的原理:
  • (1)、主库必须开启二进制日志

  • (2)、当有增删改的语句时,会记录到主库的binlog中

  • (3)、主库通过IO线程把binlog里面的内容传给从库的relay binlog(中继日志)(这是msyql复制是异步复制的原因)

  • (4)、从库的sql线程负责读取它的relay log里的信息并应用到数据库中

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/23622.html发布于 2025-01-15 09:18:04
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享