注意点:提问
1.二进制日志和事务日志执行顺序?谁先写?
- 推测1.事务日志 先写,redo/undo在平常修改的时候就开始一直记录,不过是写到cache中,然后数据修改完毕后进入prepare阶段,进行二阶式提交,先写事务日志,再写binlog:https://www.youkuaiyun.com/gather_2f/MtTaMgwsNzU4NC1ibG9n.html
- 推测2.二进制日志先写,:https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html
- 最终结论:见上图,上面说的redo log一直写是指在未开启binlog写时候,一般类似于单机模式下,不存在主从复制问题,这个时候在commit前的写操作就不会涉及到一致性问题,但是一旦开启了binlog等,涉及到了主从复制的问题,假如commit事务,这个时候在commit之前会先写binlog日志罗盘并同步给salve,假如此时master库宕机,再次启动会回滚事务,但是从库已经执行,就会造成主备不一致问题。还是先写事务日志,进入prepare阶段后,设置标记,写入事务日志,第二步才写入binlog日志,commit事务:二阶式提交解决一致性问题,组提交方式提高io性能瓶颈
参