1

MySQL在切换binlog时会阻塞更新

 1 year ago
source link: https://blogread.cn/it/article/353?f=hot1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

MySQL在切换binlog时会阻塞更新

浏览:2741次  出处信息

   版本5.0.51b-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。

建议继续学习:

QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK