推荐个博客:https://blog.csdn.net/lengxiao1993/article/details/88290514
二阶段提交
- 在
prepare
阶段,事务协调者分别把insert ***
插入到两个数据库中 - 等两个数据库都返回插入成功,第一阶段才可以说提交结束。
- prepare 阶段结束后,事务协调者才会分别向两个数据库发送
commit
操作。 - 这里假设事务处理2收到了
commit
然后提交了事务,但是事务1由于网络或者磁盘问题没有收到,这样当一个client
访问事务1时,事务1会发现自己处于prepare
状态,就是锁定掉这个记录,把这个请求阻塞掉。以此来保证不让client
查询到错误的数据。这样看CAP
理论就是牺牲了A
(可用性)。 - 等到网络恢复了,事务处理1会到事务协调者查询(回查)状态是否可用,然后自己再
commit
。
mysql simi sync
- 当client 请求insert 操作的时候,master 会在本地执行insert 然后通过binlog同步 同步到slave 中,等到都执行了insert 返回成功后,再次commit,都成功后,再给client 返回成功结果。
未完待续。。。