【Mysql篇】Mysql中三大日志binlog、redolog、undolog

Mysql中的binlog、redolog、undolog

Mysql执行器在执行更新相关的语句时候,会记录日志

1. binlog 二进制日志

binlog是Mysql自带的日志模块(叫什么归档日志),所有引擎都可以使用

1. 发生时机(commit之前)

MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性
在这里插入图片描述
图片来源:JavaGuide链接 MySQL三大日志(binlog、redo log和undo log)

2. redolog 事务日志

redolog是InnoDB引擎自带的日志模块(重做日志),InnoDB就是通过redolog来保证事务操作的

使用 redo log(重做日志) 保证事务的持久性

比如 MySQL 实例挂了或宕机了,重启时,InnoDB存储引擎会使用redo log恢复数据,保证数据的持久性与完整性。
在这里插入图片描述
图片来源:JavaGuide链接 MySQL三大日志(binlog、redo log和undo log)

3. undolog 回滚日志

在异常发生时,对已经执行的操作进行回滚

使用 undo log(回滚日志) 来保证事务的原子性。

4. InnoDB模式下的更新的sql执行流程:

  1. 先查询到张三这一条数据,如果有缓存就用缓存
  2. 然后拿到查询的语句,把 age 改为19,然后调用InnoDB特点接口,写入这一行数据,InnoDB引擎把数据保存在内存中,同时记录redo log,此时redo log进入prepare状态,然后告诉执行器,执行完成了,随时可以提交。
  3. 执行器收到通知后记录binlog,然后调用引擎接口,提交redo logcommit状态。
  4. 更新完成。
    在这里插入图片描述
    图片来源:JavaGuide链接 MySQL三大日志(binlog、redo log和undo log)

redo log 两阶段提交的方式(redo log的写入拆成了两个步骤preparecommit),这就是两阶段提交,写完binglog后,然后再提交redo log(这里的二阶段提交和分布式事务解决方案的2PC有点区别)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值