MySQL主从延迟的原因总结

一、怎么判断主从延迟

在从库上执行SHOW SLAVE STATUS,如果结果里的seconds_behind_master字段不等于0,则代表主从有延迟,值越大延迟越大。

二、可能的原因及解决方案

2.1 网络抖动

网络抖动导致主库的binlog没能及时传给从库

解决方案:

先把从库上的查询切到主库,等网络恢复后再切回从库

2.2 从库机型配置比主库差

从库配置差性能低,导致从库消费relay log的速度比主库生成binlog的速度慢

解决方案:

换成同等机型

2.3 从库压力大

有人在从库上执行十分消耗性能的SQL查询语句,导致从库负载高,影响了同步速度

解决方案:
  • 多接几个从库,分担查询压力
  • 通过把 binlog 输出到外部系统,比如 Hadoop 这类系统,让外部系统提供统计类查询的能力
2.4 主库上执行了大事务

如果一个事务在主库上执行了 10 分钟,那这个事务很可能就会导致从库延迟 10 分钟

解决方案:

避免在主库上执行大事务,例如一次性delete很多数据,应该改为分批delete;例如对大表进行DDL,建议使用 gh-ost 方案

2.5 从库不支持并行复制

只有一个线程消费relay log,速度跟不上

解决方案:

开启多线程并行复制功能。

注意:
MySQL 5.6(含)之后的版本才支持并行复制功能,其中5.6 版本虽然支持并行复制,但支持的粒度是按库并行,即同一个库里的relay log仍然只由一个线程负责处理。因此建议使用 5.7 以上的版本

参考文献:
本文由阅读丁奇的《MySQL实战45讲》课程后总结编写

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值