ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

MySQL日志(基础知识)

2026/9/3 2:46:42 拓冰建站 浏览量
MySQL日志(基础知识)

文章目录

  • 前言
  • 日志
    • undo log
    • redo log
    • bin log
  • 总结


前言

今天来分享一下MySQL日志。


日志

MySQL 的日志分为 undo log(回滚日志)、redo log(重做日志)、bin log(归档日志),三中日志的功能各有不同。其中属于 InnoDB 的是undo log 和 redo log,对Innodb 不熟悉的可以看这篇 MySQL 的存储引擎(基本介绍)

接下来给大家介绍一下这三种日志。

undo log

undo log,回滚日志,作用为实现了事务的原子性,主要用于事务的回滚。确保事务要么全部执行成功,要么全部执行失败。

Innodb 的 MVCC 机制也需要用到 undo log,每一个隐藏列的 roll_pointer 连接 undo log。从而形成版本链。

undo log 是在事务的回滚中使用到的。也就是说它是记录着事务开启前(更新前)的数据。在执行回滚的时候根据undo log 中的数据执行相反的操作。比如对一条数据进行增加,回滚时就根据undo log 中的记录将相应的数据进行删除。

redo log

redo log,重做日志。作用是实现事务的持久性,即永久性的改变数据,也可以用于在崩溃中恢复数据。

redo log 是记录事务提交后的数据,如果在执行完事务之后完成系统崩溃,可以根据redo log 日志来恢复数据。

bin log

bin log 是 MySQL 自带的日志,存在 server 层。

bin log 也是在事务提交会后记录相应的数据。这不与 redo log 起冲突了吗?为什么呢?

因为早期 MySQL 的存储引擎是 MyISAM ,MyISAM 没有 redo log,没有 crash-safe功能,就是没有崩溃之后恢复的功能。bin log 日志只能用来归档。

所以 Innodb 在早期以插件的形式来引入 MySQL,并新增 redo log 来实现崩溃之后恢复的功能即 crash-safe 功能。

bin log 的作用就是实现数据的复制与迁移。备份恢复,主从复制。redo log 的功能是用于系统崩溃后的恢复。


总结

介绍了三种日志,稍微总结一下。

undo log,回滚日志,作用为实现了事务的原子性,主要用于事务的回滚和MVCC机制。记录着事务开启前(更新前)的数据。在执行回滚的时候根据undo log 中的数据执行相反的操作。

redo log,重做日志。作用是实现事务的持久性,用于在崩溃中恢复数据。

bin log 是 MySQL 自带的日志,存在 server 层。作用备份恢复,主从复制。


有启发点个赞 🌹

好文章不要错过,最近給大家分享的文章:MySQL 专栏

本篇参考:小林coding
预计下篇开启:Redis 专栏。

我是小辉,正在进行 Java 实习的 24 届应届毕业生。欢迎关注,持续分享,包括但不限于技术文章。全网同名…