[MySQL]innodb_flush_log_at_trx_commit与sync_binlog

2023-05-15编程技术79419

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 参考文献

(推荐)innodb_flush_log_at_trx_commit参数测试 - 博客园
MySQL的innodb_flush_log_at_trx_commit参数实验 - CSDN
innodb_flush_log_at_trx_commit和sync_binlog参数详解 - CSDN

[MySQL]innodb_flush_log_at_trx_commit与sync_binlog的相关教程结束。

本文地址:https://www.ufcn.cn/tutorials/2641148.html

如非特殊说明,本站内容均来自于网友自主分享,概不代表本站观点,如有任何问题我们都将在收到反馈后的第一时间进行处理!