mysql日志突然不记录了怎么办_mysql日志配置检查

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

MySQL日志突然不记录,大概率是配置被修改、服务重启后失效,或磁盘空间/权限等运行时问题。先别急着重装,按顺序排查几个关键点就能快速定位。

检查日志开关是否实际启用

MySQL的错误日志、慢查询日志、通用查询日志默认并不全开,且仅靠配置文件设置还不够,部分日志需运行时动态开启。执行以下命令确认当前状态:

错误日志(error log):通常总是开启的,查变量:
SHOW VARIABLES LIKE 'log_error';
看路径是否存在、是否可写
慢查询日志(slow query log)
SHOW VARIABLES LIKE 'slow_query_log';
返回 OFF 就说明没开;再看
slow_query_log_file
路径是否合理
通用查询日志(general log)
SHOW VARIABLES LIKE 'general_log';
同样要为 ON;
general_log_file
路径也需检查

核对配置文件中的日志相关参数

编辑 MySQL 配置文件(通常是

/etc/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
),在
[mysqld]
段检查以下几项是否正确设置:

log_error = /var/log/mysql/error.log
(路径存在且 mysql 用户有写权限)
slow_query_log = ON
(不是 1 或 true,必须是 ON)
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
(数值合理,太大会导致“看似没记录”)
general_log = ON
(慎开,生产环境一般关闭)
general_log_file = /var/log/mysql/general.log

改完记得

sudo systemctl restart mysql
(或 mysqld),并确认服务成功启动。

检查磁盘空间与文件权限

日志写不进去,90% 是因为:

磁盘满:运行
df -h
查看日志所在分区使用率,超 95% 就可能触发 MySQL 自动停写
目录/文件权限不对:确保日志路径父目录属主是
mysql:mysql
,且有写权限:
sudo chown -R mysql:mysql /var/log/mysql
sudo chmod 755 /var/log/mysql
SELinux 或 AppArmor 限制(尤其 CentOS/RHEL 或 Ubuntu):临时禁用测试:
sudo setenforce 0
sudo aa-disable /usr/sbin/mysqld
,若恢复记录则需调整策略

验证日志是否真“不记”,还是“没刷盘”或“被轮转”

有时日志其实写了,但你看不见:

MySQL 默认会缓冲日志输出,特别是 general_log;可执行
FLUSH LOGS;
强制刷盘,再操作触发日志(如慢查询、INSERT)观察
检查日志文件是否被 logrotate 清空或重命名了:
ls -lt /var/log/mysql/*.log*
tail -f
实时跟踪日志文件,同时执行一条明确会记日志的操作(如
SELECT SLEEP(3);
测试慢日志)

相关推荐