0
点赞
收藏
分享

微信扫一扫

MySQL 事务提交写入磁盘一致性关键参数

西特张 2023-01-11 阅读 276


【innodb_flush_log_at_trx_commit】

innodb_flush_log_at_trx_commit = 0 :每秒写入日志缓存(OS缓存),并且刷新(OS缓存)到磁盘。MySQL进程或者OS挂了丢失1秒的事务数据。

innodb_flush_log_at_trx_commit = 1 :默认值,每次事务提交时写入日志缓(OS缓存)存并刷新(OS缓存)到磁盘。MySQL进程或者OS挂了丢失1个未完成的事务数据。

innodb_flush_log_at_trx_commit = 2 :每次事务提交时写入日志缓存(OS缓存),每秒刷新(OS缓存)到磁盘。MySQL进程挂了丢失1个未完成的事务数据;OS挂了丢失1秒的事务数据。
 

MySQL 事务提交写入磁盘一致性关键参数_数据

【innodb_flush_log_at_timeout】

上面提到的是每秒刷新一次,日志刷新频率由 innodb_flush_log_at_timeout 控制,允许您将日志刷新频率设置为N秒(其中N为1 ... 2700,默认值为1)。但是,任何mysqld进程崩溃都可以丢失最多N秒的事务。innodb_flush_log_at_timeout 的设置只针对 innodb_flush_log_at_trx_commit 为 0/2 时起作用。
 

【sync_binlog】

上面提到的是每个事务刷新一次,系统变量 sync_binlog 可以设置每 N 个事务刷新一次,但是,任何mysqld进程崩溃都可以丢失最多N秒的事务。

sync_binlog=0 :禁用MySQL服务器将二进制日志同步到磁盘,MySQL依赖于操作系统将二进制日志刷新到磁盘。此性能最好。
sync_binlog=1 :每1次事务提交之后,MySQL将进行一次fsync同步binlog_cache中的数据写入磁盘。此最安全。
sync_binlog=N :每N次事务提交之后,MySQL将进行一次fsync同步binlog_cache中的数据写入磁盘。
 

为了保证事务的一致性和持久性,应设置:

sync_binlog=1
innodb_flush_log_at_trx_commit=1

 

参考:​​MySQL安全之sync_binlog&innodb_flush_log_at_trx_commit参数​​

 

举报

相关推荐

0 条评论