mysql 查看并设置 innodb_flush_log_at_trx_commit 参数
innodb_flush_log_at_trx_commit` 是 MySQL 中的一个系统变量,用于控制 InnoDB 存储引擎的日志刷新行为。该变量有三个可选的值:
-
0
:每隔一秒钟,日志缓冲被刷新到日志文件,并且日志文件每隔一秒被刷新到磁盘,但是事务提交时不会进行检查。 -
1
:默认值。每个事务提交时,日志缓冲被刷新到日志文件,并且日志文件被刷新到磁盘。 -
2
:每个事务提交时,日志缓冲被刷新到os cache 日志文件,但是日志文件只每秒刷新到磁盘一次。提交事务的时候,把redo日志写入磁盘文件对应的os cache缓存里去,而不是直接进入磁盘文件,可
能1秒后才会把os cache里的数据写入到磁盘文件里去。
这种模式下,你提交事务之后,redo log可能仅仅停留在os cache内存缓存里,没实际进入磁盘文件,万一此时要
是机器宕机了,那么os cache里的redo log就会丢失,同样会让人感觉提交事务了,结果数据却丢了。
## 查看当前的设置
SHOW GLOBAL VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
## 或者
SELECT @@global.innodb_flush_log_at_trx_commit;
## 修改这个设置
SET GLOBAL innodb_flush_log_at_trx_commit = 1;