MySQL 运维实战课
张新铭(俊达)
云掣科技资深数据库专家,前淘宝网、支付宝数据库专家
1039 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 38 讲/共 41 讲
MySQL 运维实战课
15
15
1.0x
00:00/00:00
登录|注册

36|备库有延迟怎么办?

你好,我是俊达。
在 MySQL 高可用架构中,备库延迟一直很重要。备库延迟会带来各种问题。在读写分离架构下,如果备库有延迟,读备库时就可能会读到陈旧的数据,影响业务。当主库发生故障,需要切换到备库时,如果备库有延迟,就需要先等备库执行完积压的 Binlog,这会影响业务的可用性。
MySQL 中 Binlog 复制和 Binlog 应用是分开的。使用半同步,或者使用 MGR 架构,也只是保证主库事务提交时,Binlog 同步到了备库。备库上,SQL 线程应用 Binlog 事件后,数据才真正能被访问到。
很多不同的原因会引起备库延迟,这一讲我们就来聊一聊备库延迟的一些原因,以及一些解决方法。

认识备库延迟

怎么查看备库延迟?

怎么判断备库有延迟,最简单的方法就是看 show replica status 中的 Seconds_Behind_Source。如果 Seconds_Behind_Source 大于 0,说明有延迟。但有时候,Seconds_Behind_Source 并不一定可靠。
如果 IO 线程或 SQL 线程中断了,Seconds_Behind_Source 显示为 NULL。
级联复制架构下,一级备库上可能复制有延迟或中断了,但是二级备库上,Seconds_Behind_Source 可能还是正常的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 备库延迟对MySQL高可用架构的重要性和影响,包括可能导致读取陈旧数据和影响业务可用性。 2. 备库延迟的判断方法,包括查看show replica status中的Seconds_Behind_Source,以及其局限性和计算公式。 3. 判断备库是否执行完所有binlog的方法,包括查看主库Binlog的位点,检查备库上的Relay_Source_Log_File和Exec_Source_Log_Pos,以及使用GTID集合是否一致。 4. MySQL提供的函数SOURCE_POS_WAIT和WAIT_FOR_EXECUTED_GTID_SET,用来等待备库执行进度,以及控制等待时间的参数。 5. 监控数据复制是否运行正常,包括监控IO线程、SQL线程是否都在正常运行,以及关注备库的空间情况。 6. 使用pt-heartbeat工具在主库上定期更新心跳记录的时间戳,然后到备库上计算当前时间和心跳记录时间戳之间的差距,以检查备库延迟。 7. 备库延迟的一些原因,包括主库执行大事务或长时间DDL、表缺少主键和索引、备库上数据库或表被锁定、主库写入并发高导致备库跟不上主库。 8. 使用多线程复制(MTA)来缓解备库延迟,包括配置replica_parallel_workers和replica_parallel_type参数,以及备库如何并行执行BINLOG。 9. 分析备库延迟的原因,并进行解决,包括避免大事务、给表添加主键、处理备库中的锁情况、提升备库性能等方法.

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 运维实战课》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)