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 │ │
│ │ 慢查询日志 │ │ 通用查询日志 │ │ 中继日志 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────┘| 日志类型 | 所属层 | 作用 | 持久性 |
|---|---|---|---|
| Binlog | MySQL Server | 主从复制、数据恢复 | 取决于 sync_binlog |
| Redo Log | InnoDB | 事务持久性、崩溃恢复 | 事务提交时刷盘 |
| Undo Log | InnoDB | MVCC、多版本、事务回滚 | 不需要持久性 |
| Error Log | MySQL Server | 错误记录 | 写入文件 |
| Slow Query Log | MySQL Server | 慢查询诊断 | 写入文件 |
| Relay Log | MySQL Server | 主从复制(从库用) | 写入文件 |
下一步
从 通用查询日志与错误日志 继续。
