[数据库] MySQL之innodb_flush_log_at_trx_commit与sync_binlog

目录

1 innodb_flush_log_at_trx_commit 辨析

innodb_flush_log_at_trx_commit = 0 :
    每秒将日志缓冲区写入log file,并同时flush到磁盘。跟事务提交无关。(crash可能丢失事务日志)
    在机器crash并重启后,会丢失一秒的事务日志数据(并不一定是1s,也许会有延迟,跟操作系统调度有关)

innodb_flush_log_at_trx_commit = 1:
    每次事务提交将日志缓冲区写入log file,并同时flush到磁盘。(crash不会丢失事务日志)

innodb_flush_log_at_trx_commit = 2:
    每次事务提交将日志缓冲区写入log file,每秒flush一次到磁盘。(crash有可能丢失数据)

2 sync_binlog 辨析

innodb_flush_log_at_trx_commit=1 将事务日志从日志缓存区(innodb log buffer)写入到日志文件,并刷新到磁盘上

sync_binlog = 0  由文件系统决定将binlog同步到硬盘。(mysql默认值 )
sync_binlog = 1  每提交一次事务,写一次binlog,并使用fdatasync()同步到硬盘。
sync_binlog > 1  每提交一次事务,写一次binlog,达到sync_binlog 设定的值后,调用fdatasync()同步到硬盘。

3 参考文献

posted @   千千寰宇  阅读(228)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示