暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql参数的双1设置

DBA札记 2021-06-16
1037


       "双1"参数是很重要的mysql数据库的2个参数。顾名思义,就是一般线上设置这两个参数都为1。这里从官方文档截取这两参数的说明。

      简单解释一下:

       sync_binlog=0  未开启mysql实例的binlog到磁盘的同步(binlog刷盘)。binlog的刷盘依赖与文件系统。

       sync_binlog=1 在事务提交前将binlog刷到磁盘。这样设置比较安全,但是随着磁盘写的增加对性能有负面影响。

       sync_binlog=N N不能是0或者1,收集到 N 个binlog提交组后,将binlog刷到磁盘。如果发生电源故障或操作系统崩溃,服务器可能提交了尚未刷新到binlog的事务。较高的值可提高性能,但会增加数据丢失的风险。


完全符合 ACID 需要默认设置 1。日志在每次事务提交时写入并刷新到磁盘。


设置为 0 时,每秒将日志写入并刷新到磁盘一次。未刷新日志的事务可能会在崩溃中丢失。


设置为 2 时,日志在每次事务提交后写入,并每秒刷新到磁盘一次。未刷新日志的事务可能会在崩溃中丢失。


对于设置 0 和 2,每秒刷新一次不能 100% 保证。由于 DDL 更改和其他内部 InnoDB 活动导致日志独立于 innodb_flush_log_at_trx_commit 设置刷新,刷新可能会更频繁地发生,有时由于调度问题而不太频繁。如果每秒刷新一次日志,则崩溃中可能会丢失多达一秒的事务。如果日志刷新频率高于或低于每秒一次,则可能丢失的事务量会相应地变化。


日志刷新频率由 innodb_flush_log_at_timeout 控制,它允许将日志刷新频率设置为 N 秒(其中 N 为 1 ... 2700,默认值为 1)。但是,任何 mysqld 进程崩溃都可以擦除最多 N 秒的事务。


DDL 更改和其他内部 InnoDB 活动独立于 innodb_flush_log_at_trx_commit 设置刷新日志。


无论 innodb_flush_log_at_trx_commit 设置如何,InnoDB 崩溃恢复都有效。交易要么完全应用,要么完全擦除。

文章转载自DBA札记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论