news 2026/9/7 18:23:49

MySQL 的日志体系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 的日志体系

MySQL 的日志体系主要分为服务器层日志(所有存储引擎通用)和存储引擎层日志(如 InnoDB 专属)两大类,不同日志承担不同的功能(如故障排查、性能优化、数据恢复、主从复制等)。以下是核心日志类型的详细说明:

一、服务器层核心日志(通用日志)

1. 错误日志(Error Log)
  • 核心作用:记录 MySQL 服务器启动、运行、停止过程中的所有错误、警告、通知类信息(如启动失败、连接异常、权限错误、磁盘满等),是排查 MySQL 基础故障的首要日志。
  • 关键配置
    • log_error:指定错误日志的存储路径(默认开启,无法关闭);
    • log_warnings:控制警告信息是否写入(默认开启)。
  • 文件命名:默认名为hostname.err(如localhost.err),路径通常在 MySQL 数据目录下。
2. 二进制日志(Binary Log,简称 Binlog)
  • 核心作用:记录所有修改数据的操作(增删改 DML、DDL 语句,不含只读查询如 SELECT),是 MySQL 最核心的日志之一,主要用于:
    • 主从复制(主库将 binlog 发送给从库,从库重放实现数据同步);
    • 数据恢复(通过mysqlbinlog解析 binlog,重放操作恢复数据)。
  • 关键特性
    • 格式:支持 3 种(STATEMENT记录 SQL 语句、ROW记录行变更、MIXED混合模式,推荐ROW);
    • 配置:log_bin开启 binlog(MySQL 8.0 若启用 GTID 则默认开启),expire_logs_days自动清理过期 binlog;
    • 文件命名:mysql-bin.000001mysql-bin.000002(按序号递增),配合mysql-bin.index索引文件管理。
3. 慢查询日志(Slow Query Log)
  • 核心作用:记录执行时间超过阈值(long_query_time)的 SQL 语句,是性能优化的核心工具(定位慢 SQL、优化索引 / 语句)。
  • 关键配置
    • slow_query_log:是否开启(默认关闭);
    • long_query_time:慢查询阈值(默认 10 秒,支持小数如 0.5 秒);
    • log_queries_not_using_indexes:记录未使用索引的查询(即使执行时间未达阈值);
    • slow_query_log_file:指定日志文件路径。
  • 辅助工具:可通过pt-query-digest解析慢查询日志,快速定位高频慢 SQL。
4. 通用查询日志(General Query Log)
  • 核心作用:记录所有客户端的连接请求执行的所有 SQL 语句(包括只读查询),用于调试(如定位谁执行了某条 SQL、排查异常连接)。
  • 注意事项:默认关闭,开启后会产生大量日志(IO 压力大),生产环境仅临时开启调试。
  • 关键配置general_log开启,general_log_file指定日志路径。
5. 数据定义语言日志(DDL Log,MySQL 8.0 新增)
  • 核心作用:记录 DDL 操作的元数据变更过程,用于 DDL 操作崩溃后的恢复(如创建表时数据库宕机,重启后通过 DDL 日志完成剩余操作)。
  • 特性:默认开启,无法关闭,日志文件名为ddl_log.log(数据目录下),文件大小限制为 4GB,自动轮转。

二、存储引擎层日志(以 InnoDB 为例)

1. 重做日志(Redo Log)
  • 核心作用:InnoDB 专属,记录数据页的物理变更(如页号、偏移量、修改后的值),保证崩溃恢复(Crash Recovery)
    • MySQL 宕机时,未刷盘的脏页(内存中修改但未写入磁盘的数据)可通过 Redo Log 恢复,避免数据丢失;
    • 采用 “预写式日志(WAL)”:先写 Redo Log,再刷磁盘数据,提升性能。
  • 关键配置
    • innodb_log_file_size:单个 Redo Log 文件大小(推荐 1-4GB);
    • innodb_log_files_in_group:Redo Log 文件组数(默认 2 个,如ib_logfile0ib_logfile1);
    • 特性:循环写(写满一组后覆盖旧文件),存储在数据目录下。
2. 回滚日志(Undo Log)
  • 核心作用:InnoDB 专属,主要用于:
    • 事务回滚:记录事务修改前的数据状态,事务执行失败时回滚到原始状态;
    • MVCC(多版本并发控制):为读提交、可重复读隔离级别提供快照读,避免幻读 / 不可重复读。
  • 特性
    • 逻辑日志(记录 “反向操作”,如 INSERT 对应 DELETE,UPDATE 对应反向 UPDATE);
    • MySQL 8.0 前默认存储在共享表空间ibdata1,8.0 可独立存储在undo_001undo_002文件,支持自动清理。

三、辅助日志(主从复制专属)

中继日志(Relay Log)
  • 核心作用:从库专属,主库的 binlog 传输到从库后,先写入中继日志,从库的 SQL 线程再读取中继日志并重放,实现主从同步。
  • 特性
    • 格式与 binlog 完全一致,文件名为relay-bin.000001relay-bin.000002
    • 从库同步完成后,中继日志会被自动清理(可通过relay_log_purge控制);
    • 若从库宕机,中继日志损坏可能导致同步中断,需重新同步或修复。

总结:核心日志用途速查

日志类型核心用途开启状态
错误日志排查启动 / 运行故障默认开启(必开)
二进制日志主从复制、数据恢复8.0 默认开启
慢查询日志性能优化(定位慢 SQL)默认关闭
通用查询日志调试(记录所有 SQL / 连接)默认关闭
Redo LogInnoDB 崩溃恢复强制开启
Undo Log事务回滚、MVCC强制开启
中继日志从库同步主库数据主从复制时自动开
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 8:06:15

Headscale配置终极指南:从零到精通的环境变量管理技巧

Headscale配置终极指南:从零到精通的环境变量管理技巧 【免费下载链接】headscale An open source, self-hosted implementation of the Tailscale control server 项目地址: https://gitcode.com/GitHub_Trending/he/headscale 还在为Headscale的复杂配置头…

作者头像 李华
网站建设 2026/9/7 17:27:47

测试架构师的成长路径:从技术执行到质量战略的跨越

在软件测试领域,测试架构师是连接技术实践与质量战略的核心角色。他们不仅需要深厚的测试技术功底,还需具备系统设计、风险管理和团队协作能力,推动质量保障体系从“被动检测”向“主动设计”演进。本文结合行业实践,梳理测试架构…

作者头像 李华
网站建设 2026/9/7 13:22:36

多人姿态估计终极指南:从零开始构建实时人体分析系统

在当今计算机视觉技术飞速发展的时代,多人姿态估计已成为智能监控、虚拟现实、运动分析等领域的核心技术。AlphaPose作为业界领先的开源解决方案,为开发者提供了强大的实时多人姿态估计能力。 【免费下载链接】AlphaPose Real-Time and Accurate Full-Bo…

作者头像 李华
网站建设 2026/9/8 2:45:31

【ACWing】150. 括号画家

题目地址: https://www.acwing.com/problem/content/152/ 达达是一名漫画家,她有一个奇特的爱好,就是在纸上画括号。这一天,刚刚起床的达达画了一排括号序列,其中包含小括号 ( )、中括号 [ ] 和大括号 { }&#xff0…

作者头像 李华
网站建设 2026/9/7 8:52:46

如何快速掌握Vim插件管理:VAM的完整使用指南

如何快速掌握Vim插件管理:VAM的完整使用指南 【免费下载链接】vim-addon-manager manage and install vim plugins (including their dependencies) in a sane way. If you have any trouble contact me. Usually I reply within 24 hours 项目地址: https://gitc…

作者头像 李华
网站建设 2026/9/6 19:57:04

文献分区及影响因子批量查询

针对文献下载后的影响因子查询问题,手动逐个查询效率较低,而使用Zotero等工具配合插件操作又过于繁琐。为此,我们开发了一个Python封装模块,能够自动批量处理文件夹中的文献,快速查询并生成分析报告。请注意&#xff0…

作者头像 李华