保证binlog与redolog的数据一致性。
如果没有两阶段提交:
先写redolog,再写binlog:
redolog写完,还没来得及写binlog,MySQL宕机。重启以后,redolog里有记录,MySQL判断事务提交成功,但binlog里没有记录,binlog与redolog出现数据不一致。由于binlog是追加写入日志,往后的时间里binlog会一直缺失这条数据。如果在以后使用binlog恢复这个时间点的数据,会出现数据丢失的情况。
先写binlog,再写redolog:
binlog写完,还没来得及写redolog,MySQL宕机。重启以后,redolog中没有记录,MySQL判断事务提交失败,但是binlog中有记录,binlog与redolog出现数据不一致。如果以后使用binlog恢复数据,就多出了一个事务操作。