什么是日志_mysql日志类型介绍

来源:这里教程网 时间:2026-02-28 20:40:56 作者:

MySQL 日志是数据库运行过程中的“记事本”,记录各类操作、状态和异常,对故障排查、性能优化、数据恢复和主从同步至关重要。不同日志由不同模块生成、作用各异,有些在 Server 层,有些在 InnoDB 引擎层。

核心三大事务/归档日志

这是开发和 DBA 最需掌握的底层日志,直接支撑 ACID 特性:

binlog(二进制日志):Server 层生成,逻辑日志,记录所有 DDL(如 CREATE、ALTER)和 DML(如 INSERT、UPDATE、DELETE)语句(不记录 SELECT)。用于主从复制、基于时间点的数据恢复、审计回溯。格式可选 STATEMENT / ROW / MIXED。 redo log(重做日志):InnoDB 引擎层生成,物理日志,记录数据页的修改(比如“将页 X 的偏移 Y 处值改为 Z”)。保证事务持久性(crash-safe),崩溃后能前滚未刷盘的脏页。采用循环写入方式,由 ib_logfile0/ib_logfile1 等文件组成。 undo log(回滚日志):InnoDB 引擎层生成,逻辑日志,保存事务修改前的旧值(如“原值是 100”)。支撑事务回滚和 MVCC(多版本并发控制),使读操作不加锁也能看到一致性快照。

常用运维与诊断类日志

这类日志默认关闭,按需开启,主要用于监控、审计和排障:

error log(错误日志):记录 MySQL 启动、运行、关闭过程中的严重警告、错误及崩溃信息。路径由
log_error
参数指定,是排查启动失败或异常退出的第一依据。
slow query log(慢查询日志):记录执行时间 ≥
long_query_time
(默认 10 秒)的 SQL,也可配置为记录未使用索引的查询。配合
pt-query-digest
或 MySQL 自带的
mysqldumpslow
分析效果更佳。
general log(通用查询日志):记录客户端连接、断开及所有执行的 SQL(含 SELECT)。开启后 I/O 压力明显上升,仅建议临时开启用于复现问题或审计场景。

主从复制相关日志

专用于复制链路,通常无需手动干预,但理解其流转有助于诊断同步延迟或中断:

relay log(中继日志):从库上保存的 binlog 临时副本。IO 线程从主库拉取 binlog 写入 relay log,SQL 线程再从中读取并执行。文件名形如
hostname-relay-bin.000001
,位置由
relay_log
参数控制。

其他补充说明

部分资料提到的“数据定义语句日志”“查询日志”等,实际属于 general log 或 binlog 的子集范畴;所有日志(除 binlog、relay log、redo log 是二进制格式外)默认为纯文本,便于人工查看。开启任一日志都会带来额外磁盘 I/O 和 CPU 开销,生产环境应避免长期全量开启 general log 或低阈值 slow log。

相关推荐