0
点赞
收藏
分享

微信扫一扫

Oracle 不同时段 IO 的情况

白衣蓝剑冰魄 2024-10-31 阅读 18

        在mysql中是通过多种日志的配合,来达到事务提交和回滚的目标。

        需要注意,mysql中的两阶段提交不要和分布式事务的两阶段提交混淆。

        两阶段提交主要涉及的日志是:redo log 和 bin log

        redo log 主要用于事务的持久化。

        bin log 主要用于数据的归档和同步。

        因此,在一致性要求下,需要他们两者的数据修改需要是原子性的。

        两阶段提交的过程如下。

  1. 先写 redo log 日志,并且将redo log记录设置为prepare
  2. 写 bin log 日志
  3. redo log 提交

        在这个过程中,会出现问题有阶段有两个,分别是

  1. redo log 写成功,bin log 写失败
  2. bin log 写成功,redo log 提交失败

        在第一种情况中,由于redo log 是未提交状态,因为未提交状态不能算正式数据,所以两者的状态没有不一致。

        在第二种情况中,一般是因为宕机导致,在mysql重启时,会检查redo log 中处于prepare状态的记录,去bin log中检查,如果存在,则提交,不存在,放弃提交。

举报

相关推荐

0 条评论