重庆思庄Oracle、、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1038|回复: 0
打印 上一主题 下一主题

[日志类] MySQL中的三种日志

[复制链接]
跳转到指定楼层
楼主
发表于 2025-3-5 14:34:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
MySQL 包括三种类型的⽇志,分别是 binlog、 redolog 和 undolog,它们分别有不同的作⽤和特点。


binlog (存档日志)
binlog(Binary log)是 MySQL 中的⼆进制⽇志⽂件,是 Server 层⽣成的的⽇志,主要⽤于数据备份和主从复制。⽤于记录 MySQL 服务器上的所有更新和修改操作。它可以记录所有的 DDL(Data Definition Language)和 DML(Data Modification Language)操作,包括对表结构的更改、数据的插⼊、修改、删除等等。binlog是在事务提交后⽣成的,因此可以⽤于恢复数据库。


redolog
redolog(Redo log)⽤于恢复数据,保证数据的⼀致性和持久性。当 MySQL 发⽣修改时, redolog 会将这些操作记录下来,并写⼊磁盘。这样,当 MySQL 发⽣宕机或崩溃时,通过重放 redolog 就可 以恢复数据。


undolog
undolog(Undo log)⽤于回滚操作。当 MySQL 发⽣事务回滚时,undolog 会记录这些操作并将其写⼊磁盘。这样,当 MySQL 需要回滚时,通过重放 undolog 就可以回滚事务。


区别
binlog 和 redolog 都是 MySQL 中的⼆进制⽇志,但是它们的作⽤和实现⽅式有所不同。binlog 是 MySQL 记 录所有的操作,⽽ redolog 则是⽤于保证数据的⼀致性和持久性。此外,binlog 是逻辑⽇志,redolog 是物理⽇志。binlog 记录的是SQL语句,⽽ redolog 记录的是数据⻚的修改,所以 binlog 可以跨平台使⽤,⽽ redolog 不能。undolog 和 redolog 的区别是,undolog 是⽤于回滚操作的,⽽ redolog 是⽤于恢复数据。


uodolog 格式由 trx_ 事务 id + roll_pointer 指针串成⼀个链表,即版本链。此外在读提交和可重复读 隔离级别中,uodolog 和快照 readView 实现了 MVCC。


redolog:它是为了防⽌机器故障导致数据丢失的物理⽇志,它⽤于记录数据⻚做了什么修改,每当执⾏⼀ 条事务就会产⽣这样的⼀条或多条物理⽇志,然后通过顺序写写⼊磁盘。它和 uodolog 区别是:


redolog 记录了 此次事务完成后的数据状态,记录的是更新之后的值;undolog 记录了此次事务开始前的数据状态,记录的是更 新之前的值;它保证了数据的持久性。


binlog 是逻辑⽇志,在完成⼀条更新操作后,server 层会⽣成 binlog,等事务提交时,将此事务运⾏中产⽣的所 有 DDL 记录通过追加写统⼀写⼊ binlog ⽇志⽂件,保存的是全量的⽇志,⽤于备份恢复和主从复制。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2025-4-19 07:47 , Processed in 0.114364 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表