mysql 【双1】
• 为什么需要设置双1才能保证主从数据的一致性;
innodb_flush_log_at_trx_commit 磁盘写入策略
0:每秒一次触发,log thread 将 log buffer 中的数据写入操作系统缓冲,每秒调用操作系统 fsync 刷写IO缓存。
1:在提交事务时,log thread 将 log buffer 中的数据写入操作系统缓冲,并调用操作系统 fsync 刷写IO缓存。
2:在提交事务时,log thread 将 log buffer 中的数据写入操作系统缓冲,每秒调用操作系统 fsync 刷写IO缓存。
0 近似1秒 把log buffer写入log file 并且把log file刷到硬盘(最快)
1 每个事务提交 把log buffer写入log file 并且把log file刷到硬盘 (最安全、最慢)
2 每个事务提交 把log buffer写入log file ,近似1秒 把log file刷到硬盘
sync_binlog 二进制日志写入策略
0:在提交事务时,log thread 将 binlog_cache 中的数据写入操作系统缓冲,不调用操作系统 fsync 刷写IO缓存。
1:在提交事务时,log thread 将 binlog_cache 中的数据写入操作系统缓冲,并调用操作系统 fsync 刷写IO缓存。
N:在提交事务时,log thread 将 binlog_cache 中的数据写入操作系统缓冲,每N次写磁盘,调用操作系统 fsync 刷写IO缓存。
0 由操作系统决定何时把binlog刷到硬盘(最快)
1 每个事务提交,把binlog刷到硬盘(最安全、最慢)
N N个事务提交,把binlog刷到硬盘A