本文共 453 字,大约阅读时间需要 1 分钟。
Mysql Server与innoDB是分开的,Server负责解析SQL并生成执行计划之后其任务结束,然后由innoDB负责生成结果返回。在mysql的主从配置环境下,binlog本身就是一个事务协调器,负责二阶段事务提交功能,eg:当数据库A和B都prepare时,TA协调器通知A和B进行COMMIT操作,当其中一台crash当其恢复后会找TA协调器进行确认是否还有未提交的事务,如果未提交会再次提交保证数据一致性(当两台数据库都是prepare时在提交的时候如果其中一台CRASH了在其恢复后将会回到prepare状态再找事务协调器确认是否需要提交事务,crash后先从redolog中回滚到最新状态再从binlog中恢复数据一致的最终状态)。当mysql在主从配置的情况下主Server先向从Server的redolog写日志后再从中恢复数据。binlog存在三种方式row-based;statement;mixed目前在5.7.x小前默认是mixed方式,之后的版本是row-based方式。
转载地址:http://pbnsi.baihongyu.com/