随笔 - 116  文章 - 5  评论 - 1  阅读 - 14万

mysql 半同步的模式 after_commit 与 after_sync

参考MySQL半同步after_sync与after_commit - 墨天轮 (modb.pro)

1. after_commit

提交流程:client-->execute sql-->wrtie redolog-->write binlog-->innodb storage commit-->wait ACK-->client receive OK。

2.after_sync

提交流程:client-->execute sql-->wrtie redolog-->write binlog-->wait ACK-->innodb storage commit-->client receive OK。

从提交流程可以看出,两个模式的区别就是提交到存储引擎与等待从库的ACK的顺序。

after_commit模式先提交到存储引擎,那么主库上事务相当于已经完成了,虽然没有等到从库的ACK,没有给客户端以事务成功的反馈,但是在连接主库的其他客户端上是能查询到主库修改的数据,此时发生故障,从库切主库时相当于丢失了数据。也就是说after_commit无法保证主从数据的强一致性。

after_sync模式是主库先要等到从库的ACK,然后再提交到存储引擎,在提交到存储引擎前,主从上都查不到事务的修改,此时发生故障切换,不算丢失数据,因为故障前的事务尚未完成。也就是说after_sync模式可以保证主从的强一致性。

因此推荐使用after_sync模式。

 

搭建主从半同步架构。

执行一个大事务,解析binlog 来查看主从的同步状态。

 

posted on   JennyYu  阅读(670)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示