Mysql学习笔记之【日志系统】

MySQL的日志系统包括binlog、undolog、redolog等,它们各自承担不同的角色。undolog用于事务回滚,记录老版本数据;redolog则是物理日志,确保数据一致性和持久性,通过顺序写提高效率。binlog记录原始语句,支持数据库恢复和主从复制。WAL机制保证先写日志后写数据,提高系统稳定性。
摘要由CSDN通过智能技术生成

mysql中的日志系统,有以下几类:

英文名中文名
binlog归档日志
errorlog错误日志
slowlog慢日志
relaylog中继日志
undolog回滚日志
redolog重做日志

undolog 回滚日志

undolog是Mysql的回滚日志, 存储的是老版本的数据

作用:

  1. 存储老版本数据
  2. 用于在事务执行失败回滚到事务执行之前的版本
    undolog 会在事务提交之后删除。undolog 交由Mysql的Purage线程来负责删除。Purage 会定期检查undolog中的delete_bit标志,这个标志会在事务提交后改为true,Purage进程发现标志为true的undolog 就会将其删除。

redolog 重做日志

redo log是Mysql的物理日志, 负责记录某个数据页执行了什么样的操作

作用

  1. 负责记录事务提交前对数据的修改,
  2. 让Mysql提交事务的时候无需等待数据持久化到磁盘,只需要将redolog 持久化到磁盘就可以了
  3. 未清除的redolog的数量标识了为刷盘的脏页数量

为什么提交事务是选择持久化redo log, 而不是持久化数据到磁盘

持久化数据到磁盘是随机IO的过程,相对于顺序IO速度慢,所以Mysql选择将数据缓存起来,等待一个合适的时间一次性写入磁盘,减少IO。但是将数据缓存在内存中是有丢失的风险,而redolog 是顺序IO,速度较快,mysql 选择redolog持久化。

redo log是顺序写, 持久化的效率比随机写的效率要高, 并且redo log记录了数据的变化情况, 只要redo log在就可以保证在Mysql重启后恢复数据。

undolog 和redolog的区别

undolog 记录的是事务执行过程中旧数据的状态,redolog记录的是数据更新之后的状态。
undolog 保障事务的原子性,而redolog 保障的是事务的一致性和持久性。

binlog 归档日志
binlog是mysql的server层实现的,是所有引擎通用的。

作用:
binlog记录的是mysql原始的执行语句,并采取的是追加写入的方式记录的,所有可以恢复数据库在任意时刻的数据状态。所有binlog叫做归档日志,同时它也是主从复制的依赖,从库通过复制主库的binlog回放来同步主库的数据。

Mysql的WAL(Write Ahead Login)机制
先写日志到磁盘,后写数据到磁盘。Mysql的写操作不知立刻写入磁盘的,而是先写日志,等redolog 和 binlog持久化到磁盘后,再由后台进程选择时间将数据持久化到硬盘。

待补充。。。

参考文章:MySQL日志系统 - 一文贯通MySQL日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值