为什么需要两阶段提交

如果不是两阶段提交,只能要么先redo,再binlog。要么先binlog,再redolog。看一下会有什么问题
假设使用一下语句进行更改

update table set id = 1 where id =0;

先redo 再binlog

先写redo,然后crash了,binlog没同步上。就会导致crash重建时,有了id=1的记录,但是用binlog去同步其他从节点时,依旧是id=0;

先binlog再redo

先写binlog,然后crash了,redo log没同步上。就会导致crash重建时无法进行id=1记录的恢复,实际上id=1的操作就丢失了,但是在binlog中却保存了,用binlog去同步其他从节点时,id=1;

你可能感兴趣的:(为什么需要两阶段提交)