暂无图片
mysql的binlog_order_commits设为off的后果是什么
我来答
分享
variable
2023-04-21
mysql的binlog_order_commits设为off的后果是什么

最近把这参数打开,发现压测数据快了5%到10%。看文档只说了关闭后,没法保证innodb层提交顺序与binlog一致。感觉这个影响非常小才对,但网上搜这参数的时候发现配置里都是开着的。

想问下,设为off后回到半同步或者mgr有影响吗?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
Zixin Huo

MySQL 的 binlog_order_commits 参数的默认值为 OFF,即关闭状态,如果将其设置为 ON,则会强制将 binlog 和 InnoDB 的提交顺序保持一致。

当 binlog_order_commits 参数设置为 OFF 时,MySQL 不会强制保证 binlog 和 InnoDB 的提交顺序一致。这可能会导致在出现故障时丢失一些数据,因为 binlog 可能会先写入磁盘,而 InnoDB 可能还没有写入。但是,对于绝大多数应用程序而言,这种影响非常小,因此默认情况下该参数是关闭的。

如果将该参数设置为 ON,则 MySQL 会强制将 binlog 和 InnoDB 的提交顺序保持一致,从而确保数据的一致性和完整性。但是,这可能会对性能产生一定的影响,因为必须在提交事务之前等待 binlog 写入完成。如果你的应用程序需要保证数据的一致性和完整性,则应该将该参数设置为 ON。

针对这个问题,如果你将该参数设置为 OFF,然后使用半同步复制或 MGR 进行复制,理论上不应该对复制造成影响,因为半同步复制和 MGR 使用的是不同的复制机制,并不依赖于 binlog_order_commits 参数。但是,在某些特定情况下,关闭该参数有可能会导致数据的不一致性,或许还要提供你更多的信息。

暂无图片 评论
暂无图片 有用 0
洋葱
2023-04-28
当 binlog_order_commits 参数设置为 OFF 时,MySQL 不会强制保证 binlog 和 InnoDB 的提交顺序一致。但是,故障时不会丢失数据。在重启故障恢复时,会保证binlog层和innodb层的数据一致性,参见mysql 8.0.30的故障恢复流程。而且,这个参数开与不开都有可能发生”binlog 可能会先写入磁盘,而 InnoDB 可能还没有写入“的情况。
Zixin Huo
答主
2023-04-28
向佬学习
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏