MySQL——binlog刷盘机制
一、binlog刷盘机制
- binlog是由mysql的server层提供出来一种日志记录方式,是所有引擎共用的,不是只属于innoDB引擎。
- binlog同样提供了3种同步机制,通过配置文件中sync_binlog属性的实现的刷盘策略。
二、sync_binlog属性提供的3种刷盘策略
-
sync_binlog=0 操作系统决定(实时写,延迟刷)。
由server层的执行器在提交了事务之后,写到PageCache,再由操作系统决定什么时候调用fsync函数将 binlog 写入到磁盘(性能最高,但宕机可能丢失部分 binlog)
-
sync_binlog=1 提交时写入(实时写、实时刷)。
每次事务提交时都强制刷新 binlog 到磁盘(最安全,但性能较低)
-
sync_binlog=2 n次事务提交(实时写、延迟刷)。
由server层的执行器在提交了N次事务之后,写到PageCache,再由操作系统决定什么时候调用fsync函数将 binlog 写入到磁盘(折中方案,平衡安全性和性能)
-
mysql5.7.7以前的版本默认使用sync_binlog=0
-
mysql5.7.7以后的版本默认使用sync_binlog=1