游客发表
大家好,盘点我是数据捡田螺的小男孩。
我们来看一道字节面试题:mysql主从延迟的库主原因有哪些?你遇到的最大延迟是多大?如何解决?
我以前见过的最大延迟是3个多小时。本文我们一起来聊聊主从延迟吧。从延迟
主从延迟的个原定义主从延迟原因的9个原因以及解决方案与主从数据同步相关的时间点有三个
主库执行完一个事务,写入binlog,因及我们把这个时刻记为T1;主库同步数据给从库,解决从库接收完这个binlog的盘点时刻,记录为T2;从库执行完这个事务,数据这个时刻记录为T3。库主所谓主从延迟,从延迟其实就是个原指同一个事务,在从库执行完的因及时间和在主库执行完的时间差值,即T3-T1。解决
主从复制原理不记得的盘点伙伴,可以看这个图哈:
图片
网络延迟是免费信息发布网导致主从延迟的一个重要因素。我们要确保主从服务器之间的网络连接是高速且稳定的。可以考虑使用专用网络连接或提高网络带宽。
比如带宽20M升级到100M类似意思等。
如果从库的压力大,也会导致主从延迟。
比如主库直接影响业务的,大家可能使用会比较克制,因此一般查询都打到从库了,结果导致从库查询消耗大量CPU,影响同步速度,最后导致主从延迟。
这种情况的话,可以搞了一主多从的架构,即多接几个从库分摊读的压力,增加从库的数量可以分散读取负载,提高数据同步的速度和可靠性。另外,还可以把binlog接入到Hadoop这类系统,让它们提供查询的能力。高防服务器
调整MySQL数据库中的相关参数,如binlog格式、binlog缓冲区大小、innodb_flush_log_at_trx_commit等,以优化性能。
适当的参数设置可以减少磁盘I/O和事务提交延迟。
半同步复制是介于全同步复制和异步复制之间的一种复制方式。主库在提交事务时需要等待至少一个从库接收到并写入到relay log中才返回结果给客户端。
图片
这可以提高数据的安全性,并减少主从延迟。但需要注意的是,半同步复制可能会增加写操作的延迟
如果从库所在的机器比主库的机器性能差,会导致主从延迟,这种情况比较好解决,只需选择主从库一样规格的机器就好。
因此,我们可以:
升级从服务器的硬件,特别是磁盘I/O系统和CPU,以便更快地应用复制事件。IT技术网使用SSD可以显著提高I/O性能。这是减少主从延迟时间,最简单粗暴的方法~~
如果一个事务执行就要10分钟,那么主库执行完后,给到从库执行,最后这个事务可能就会导致从库延迟10分钟啦。日常开发中,我们为什么特别强调,不要一次性delete太多SQL,需要分批进行,其实也是为了避免大事务。另外,大表的DDL语句,也会导致大事务,大家日常开发关注一下哈。
低版本的MySQL只支持单线程复制,如果主库并发高,来不及传送到从库,就会导致延迟。可以换用更高版本的Mysql,可以支持多线程复制。
随机阅读
热门排行
友情链接