MySQL日志包括错误日志(默认开启)、通用查询日志(调试用,影响性能)、慢查询日志(优化排查)和二进制日志(主从复制与恢复),需按版本差异配置路径、参数并确保权限与磁盘空间。

MySQL 日志主要分为错误日志、查询日志(General Log)、慢查询日志(Slow Query Log)和二进制日志(Binary Log),不同日志用途不同,开启方式也略有差异。配置前建议先确认 MySQL 版本(SELECT VERSION();),部分参数在 8.0+ 有调整。
开启错误日志(error log)
错误日志默认已开启,记录启动、关闭、严重警告和错误信息。位置通常由 log_error 参数指定,可通过以下命令查看:
查看当前路径:SHOW VARIABLES LIKE 'log_error';
修改方法(需重启或动态设置,取决于版本):
- 在
my.cnf(Linux)或my.ini(Windows)的[mysqld]段添加:log_error = /var/log/mysql/error.log - MySQL 8.0.14+ 支持动态修改(无需重启):
SET PERSIST log_error = '/var/log/mysql/error.log';
开启通用查询日志(general log)
记录所有执行的 SQL 语句(含 SELECT),适合调试但影响性能,不建议长期开启。
启用方式:
- 临时开启(会话级或全局,重启失效):
SET GLOBAL general_log = ON;SET GLOBAL log_output = 'FILE';(输出到文件)或'TABLE'(写入mysql.general_log表) - 永久开启(需配置文件):
在[mysqld]下添加:general_log = ONgeneral_log_file = /var/log/mysql/general.log
开启慢查询日志(slow query log)
记录执行时间超过 long_query_time 的 SQL,默认阈值为 10 秒,可调低用于优化排查。
配置步骤:
- 检查是否启用:
SHOW VARIABLES LIKE 'slow_query_log'; - 临时启用:
SET GLOBAL slow_query_log = ON;SET GLOBAL long_query_time = 1;(设为 1 秒) - 永久配置(推荐):
slow_query_log = ONslow_query_log_file = /var/log/mysql/slow.loglong_query_time = 1log_queries_not_using_indexes = ON(可选,记录未走索引的查询)
开启二进制日志(binary log)
用于主从复制和基于时间点的数据恢复,生产环境通常必须开启。
配置要点:
- 必须设置
server_id(唯一整数),否则无法启用:server_id = 1 - 启用并指定文件名前缀:
log_bin = /var/lib/mysql/mysql-bin - 可选限制大小与过期天数:
max_binlog_size = 100Mexpire_logs_days = 7(MySQL 8.0+ 推荐用binlog_expire_logs_seconds = 604800)
配置完成后务必重启 MySQL 服务(systemctl restart mysqld)或确认动态生效。所有日志路径需确保 MySQL 进程有读写权限,且磁盘空间充足。不复杂但容易忽略。










