ITPub博客

首页 > 数据库 > 数据库开发技术 > mysql参数的"双1"设置

mysql参数的"双1"设置

原创 数据库开发技术 作者:DBA札记 时间:2021-06-16 22:48:34 0 删除 编辑


       "双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札记;如有侵权,请联系管理员删除。

上一篇: 升维思维--杂谈
请登录后发表评论 登录
全部评论

注册时间:2020-01-18

  • 博文量
    90
  • 访问量
    40027