MySQL日志包括错误日志(默认开启)、通用查询日志(调试用,影响性能)、慢查询日志(优化排查)和二进制日志(主从复制与恢复),需按版本差异配置路径、参数并确保权限与磁盘空间。
MySQL 日志主要分为错误日志、查询日志(General Log)、慢查询日志(Slow Query Log)和二进制日志(Binary Log),不同日志用途不同,开启方式也略有差异。配置
前建议先确认 MySQL 版本(SELECT VERSION();),部分参数在 8.0+ 有调整。
错误日志默认已开启,记录启动、关闭、严重警告和错误信息。位置通常由 log_error 参数指定,可通过以下命令查看:
查看当前路径:SHOW VARIABLES LIKE 'log_error';
修改方法(需重启或动态设置,取决于版本):
my.cnf(Linux)或 my.ini(Windows)的 [mysqld] 段添加:log_error = /var/log/mysql/error.log
SET PERSIST log_error = '/var/log/mysql/error.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
记录执行时间超过 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(可选,记录未走索引的查询)用于主从复制和基于时间点的数据恢复,生产环境通常必须开启。
配置要点:
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 进程有读写权限,且磁盘空间充足。不复杂但容易忽略。