1. 双1设置
innodb_flush_logs_at_trx_commit=1 #redo log(事务日志)的刷盘策略,每次事务提交时MySQL都会把事务日志缓存区的数据写入日志文件中,并且刷新到磁盘中,该模式为系统默认
sync_binlog=1 #在进行每1次事务提交(写入二进制日志)以后,Mysql将执行一次fsync的磁盘同步指令,将缓冲区数据刷新到磁盘
2. 双1设置的适用场景
适合数据安全性要求非常高,而且磁盘IO写能力足够支持业务(磁盘为 PCIE SSD)
3. 双1设置的选项
sync binlog
该参数表示事务写入 binary log 并使用 fdatasync()函数同步到磁盘的过程
-
取值为0:mysql自己不主动同步,依赖操作系统本身不定期把文件内容刷新到磁盘。
-
性能最佳取值为1:每次事务提交后将 binlog cache 中的数据强制写入磁盘 bin log志中,是最慢的,但是最安全。
-
取值>1:当进行n次事务提交后,mysql将 binlog cache 中的数据强制写入磁盘中。
innodb flush log at trx commit
该参数表示 log buffer 写入 log file 以及刷新到磁盘的过程
-
取值为0:log buffer 每秒写入日志文件 log file 并刷新 fush 到磁盘。这种情况下,mysql 的日志刷写操作和事务提交操作没有关系。因此 mysql的性能是最好的时刻,但是不安全。
-
取值为1:每次事务提交时,log buffer 会被写入到日志文件并且还要刷写到磁盘上。由于每次事务都要提交到I/O设备,因此会慢一点,不过是最安全的。
-
取值为2:0和1的中间效果,即每次的事务提交会写入 log buffer,而刷写到磁盘则是一秒进行一次,性能属于一般。