Skip to content

MySQL 日志体系

MySQL 的日志系统是理解 InnoDB 事务持久性和崩溃恢复的关键。这一模块深入讲解 Redo Log、Undo Log、Binlog 的作用、原理和协同。


MySQL 日志全景图

MySQL 有多种日志,它们各司其职:

MySQL 日志体系:
┌─────────────────────────────────────────────────────────┐
│                     MySQL Server 层                      │
│  ┌──────────────────────────────────────────────────┐   │
│  │              Binlog(二进制日志)                  │   │
│  │  作用:主从复制 + 数据恢复                          │   │
│  │  引擎:MySQL Server(所有引擎共享)                  │   │
│  │  刷盘:sync_binlog 参数控制                         │   │
│  └──────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│                    InnoDB 存储引擎层                     │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │   Redo Log    │  │   Undo Log   │  │   Error Log  │  │
│  │  作用:持久性  │  │  作用:原子性 │  │  作用:错误日志│  │
│  │  格式:物理    │  │  格式:逻辑   │  │  引擎:Server │  │
│  │  循环文件     │  │  链表结构    │  │              │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │ Slow Query   │  │ General Query│  │ Relay Log    │  │
│  │ 慢查询日志   │  │ 通用查询日志  │  │ 中继日志     │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└─────────────────────────────────────────────────────────┘
日志类型所属层作用持久性
BinlogMySQL Server主从复制、数据恢复取决于 sync_binlog
Redo LogInnoDB事务持久性、崩溃恢复事务提交时刷盘
Undo LogInnoDBMVCC、多版本、事务回滚不需要持久性
Error LogMySQL Server错误记录写入文件
Slow Query LogMySQL Server慢查询诊断写入文件
Relay LogMySQL Server主从复制(从库用)写入文件

下一步

通用查询日志与错误日志 继续。

基于 VitePress 构建