MySQL在切换binlog时会阻塞更新

微信扫一扫,分享到朋友圈

MySQL在切换binlog时会阻塞更新
版本

5.0.51


b-log,在max-binlog-size设置为700M或者更大时(这个值可能跟硬件性能有关),当binlog达到设置上限并切换成下一个binlog时,所有的更新语句就会被阻塞,不管多简单的语句。

最开始在数据库慢查询里面发现偶尔的插入变慢怎么想也不明白,后来发现每次变慢的时间点和创建一个新的binlog的时间一致,然后经过测试,复现了此问题。

目前没发现为什么会引起此问题,如果要解决的话可以考虑设置max_binlog_size=600M,如果系统对插入速度或者超时没有苛刻的要求的话也可以不理会这个问题:)


  最近还发现它不光阻塞更新,如果设置了replication那么它对从库的查询也有影响。
在binlog切换时,会有一个Rotate_log_event产生,而slave同步到此event后也会让Relay-log切换。由于mysql写这种日志都是写入系统缓存后就不管了,导致切换文件时需要对旧文件进行fdatasync,这时候瞬间io压力会过大,耗时较长。这种情况会阻塞更新的线程,让replication延迟,影响查询….
如果想解决此问题,可以调节系统/proc/sys/vm/下面 dirty_background_ratio、dirty_expire_centisecs、dirty_ratio、dirty_writeback_centisecs这几个值,或者设置sync_binlog和max_relay_log_size。

觉得文章有用?立即:和朋友一起 共学习 共进步!

建议继续学习:


  1. 关于IO的同步,异步,阻塞,非阻塞    (阅读:13613)

  2. 利用binlog来恢复数据库    (阅读:3745)

  3. 说说使用mysqlbinlog按时间查询二进制日志时容易疏忽的地方    (阅读:2544)

  4. Linux下访问文件的基本模式    (阅读:2526)

  5. 总结一下遇到过的网络同步IO导致服务阻塞的问题    (阅读:2284)

  6. mysql audit-访问日志记录    (阅读:2139)

  7. 用insert delayed减少阻塞时间    (阅读:2103)

  8. Linux 核心编程 – fsync, write    (阅读:2062)

  9. 使用内置定时事件的功能来定时删除 binlog    (阅读:1482)

  10. 为什么binlog大小会大于max_binlog_size?    (阅读:1303)

QQ技术交流群:445447336,欢迎加入!

扫一扫订阅我的微信号:IT技术博客大学习

彭博社:苹果供应商博通预计部分型号iPhone 12或面临推迟发布

上一篇

QQ 半自动发送情话,我追到了女神 | 原力计划

下一篇

你也可能喜欢

MySQL在切换binlog时会阻塞更新

长按储存图像,分享给朋友