前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql参数的"双1"设置

mysql参数的"双1"设置

作者头像
DBA札记
发布2021-07-06 10:59:03
1.5K0
发布2021-07-06 10:59:03
举报
文章被收录于专栏:MySQL参数系列MySQL参数系列

"双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 崩溃恢复都有效。交易要么完全应用,要么完全擦除。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA札记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档