两阶段提交总结

两种日志

redo log

  • InnoDB特有
  • 物理日志,记录在某个数据页上做了什么修改
  • 循环写,空间固定会用完,类似ringbuf

binlog

  • mysql的server层实现的
  • 逻辑日志,记录的是语句的原始逻辑
  • 追加写,binlog文件写到一定大小后会切换到下一个,并不会覆盖以前的日志
事务执行过程

事务执行简单过程:

  1. 更新内存
  2. 写入redolog,此时处于prepare阶段
  3. 写binlog
  4. 提交事务,此时处于commit状态
两阶段提交怎么保证redolog跟binlog逻辑一致的?

1 prepare阶段 2 写binlog 3 commit

Created with Raphaël 2.2.0 1 prepare阶段 2 写binlog 3 结束

在 2 之前 crash
重启恢复:发现没commit,回滚
备份恢复:没有binlog

在3之前crash
重启恢复:没有commit,单是prepare 和 binlog 逻辑一致
备份恢复:有binlog操作记录
所以直接commit即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值