MySQL 自动的故障安全恢复详解(ACSR)

ACSR(Auto Crash Safey Recovery)自动的故障安全恢复

更新操作

在一行数据被更新时:

b51e90c20bf17c1f30deacbaeb1f8ac1.png

1、在使用BEGIN开启事务时,会先给.ibd文件中分配一个TXID号和LSN号,假设为tx_01与lsn1001;

2、在UPDATE执行时,MySQL会找到需更新数据的数据页,并将其内容加载到data buffer pool中,由DBWR(double write)线程记录变更数据页的内容,并且记录好TXID和更新LSN号,此时将产生脏页与脏数据;

3、使用LOGBWR(log double write)线程,将更新前的数据页变化内容与TXID号以及LSN号记录到undo log buffer中;

4、使用LOGBWR(log double write)线程,将更新后的数据页变化内容与TXID号以及LSN号记录到redo log buffer中。

现在,基于WAL原则为了应对用户进行ROLLBACK操作,LOGBWR(log double write)线程会将undo log buffer中的内容全部写入到undo_log即ibdata1(MySQL5.7版本undo_log仍然存在于共享表空间中)文件中。

COMMIT操作

现在我们基于上面BEGIN后发生的情况执行COMMIT操作,内部会做以下的3件事:

1、执行COMMIT操作,基于WAL原则,LOGBWR线程会先将redo log buffer中记录的日志信息写入redo_log文件中,在日志信息完全写入redo_log即ib_log

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值