【Mysql】 日志和索引相关问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w372426096/article/details/87856608

binlog(归档日志)和redo log(重做日志)配合崩溃回复,如果不这样两阶段提交,会导致Mysql出现主备数据不一致等问题。

在两阶段提交的不同瞬间,mysql如果发生异常重启,是怎么保证数据完整性的?

时刻A:发生crash,此时binlog还没写,redo log也还没提交,所以崩溃回复的时候,这个事务会回滚。这时候binlog还没写,所以也不会传到备库。

时刻B:崩溃回复时的判断规则:

1.如果redo log里面的事务是完整的,也就是已经有了commit标识,则直接提交;

2.如果redo log里面的事务只有完整的prepare,则判断对应的事务binlog是否存在并完整:

a.如果是,则提交事务

b.否则,回滚事务

猜你喜欢

转载自blog.csdn.net/w372426096/article/details/87856608
今日推荐