GreatSQL社区

搜索

[已解决] sync_binlog与Binlog_group_commit_sync_no_delay_count的区别

1221 10 2023-5-4 17:08
请教各位大侠,在MySQL中设置sync_binlog =N(N>1) 的时候,会累计N个事务才调用fsync刷盘,而Binlog_group_commit_sync_no_delay_count=N时也是累积N个事务后再刷盘,那这两个参数的具体区别是啥,生产环境怎么设比较好呢?如果已经有了组提交,sync_binlog是否设为1即可呢?
全部回复(10)
eliu 2023-5-4 18:38:52
KAiTO 发表于 2023-5-4 17:53
sync_binlog和Binlog_group_commit_sync_no_delay_count都是用来控制MySQL在写binlog时的刷盘策略,但两者 ...

首先感谢您的答复。另外看完您的解释我还是感觉当设置sync_binlog=N时,其作用跟Binlog_group_commit_sync_no_delay_count=N差不多啊。另外,如果sync_binlog=1,但是Binlog_group_commit_sync_no_delay_count=N,那么是不是还是会等待N个事务才会刷盘?这样的话sync_binlog=1还有作用吗?或者说这个sync_binlog的参数是否是老版本的参数,而新版本的MySQL因为都是组提交了,那么设置Binlog_group_commit_sync_no_delay_count这个参数是否更有意义?
eliu 2023-5-4 18:45:29
eliu 发表于 2023-5-4 18:38
首先感谢您的答复。另外看完您的解释我还是感觉当设置sync_binlog=N时,其作用跟Binlog_group_commit_syn ...

或者说当设置sync_binlog=1时,我期望每次事务提交都会刷盘。但如果Binlog_group_commit_sync_no_delay_count=10假设,那么这时当不足10个事务的时候仍然不会刷盘,此时断电,那么就会导致已经进入queue中的所有事务的binlog丢失,假设queue中已经有5个事务,那么意味着这个5个事务的binlog都丢失了,因此跟我设置sync_binlog=1的期望是不符的。不知道是否可以这样理解?
eliu 2023-5-4 19:32:04
leasion_li 发表于 2023-5-4 18:51
组提交会丢数据?我理解组提交会延迟给应用返回的时间,如果在组提交期间数据库挂了,这个时候还没有给应用 ...

确实,这时还没有返回。不过这两个参数之间是什么关系还是有点懵
eliu

1

主题

0

博客

7

贡献

新手上路

Rank: 1

积分
11

月度博学人物

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-5-19 09:51 , Processed in 0.018659 second(s), 16 queries , Redis On.
快速回复 返回顶部 返回列表