- after_commit
提交流程:client–>execute sql–>wrtie redolog–>write binlog–>innodb storage commit–>wait ACK–>client receive OK。
- 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模式。
最后修改时间:2024-11-25 08:50:47
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




