MySQL 日志系统全解析:类型、作用与实战配置
MySQL 的日志系统是数据库运维、故障排查和数据恢复的核心支撑,包含六种关键日志:事务日志(redo log、undo log)、二进制日志(binlog)、错误日志、慢查询日志、一般查询日志、中继日志(relay log)。每种日志各司其职,共同保障数据库的稳定性、可追溯性和一致性。
事务日志:保障事务的 ACID 特性
事务日志是 InnoDB 引擎特有的日志,专门用于保证事务的原子性、一致性和持久性,分为重做日志(redo log)和回滚日志(undo log)。
1. 重做日志(redo log):保证持久性与原子性
核心作用:
当 MySQL 宕机时,通过 redo log 恢复未刷盘的脏页数据,确保事务提交后的数据不丢失(持久性)。
工作原理:
InnoDB 采用 WAL(Write-Ahead Logging,预写式日志) 机制:
- 数据修改时,先写入内存中的 redo log buffer,再异步 / 同步刷入磁盘的 redo log file;
- 同时修改内存缓冲池(Buffer Pool)中的数据页(脏页),脏页会定期异步刷入磁盘;
- 若宕机,重启时通过 redo log 回放未刷盘的脏页操作,恢复数据。
redo log 记录的是物理日志(如 “数据页 X 的偏移量 Y 处修改为 Z”),与具体 SQL 无关。
存储与配置:
存储位置:默认在数据目录下,以
ib_logfile0、ib_logfile1命名(循环写入,满后覆盖旧日志)。关键配置:

