mysql如何启用日志记录_mysql日志配置

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

怎么确认当前开了哪些日志

别急着改配置,先连上 MySQL 看一眼现状:

mysql -u root -p
→ 输入密码后执行:
SHOW VARIABLES LIKE 'general_log%';

SHOW VARIABLES LIKE 'slow_query_log%';

SHOW VARIABLES LIKE 'log_error';

SHOW VARIABLES LIKE 'log_bin';

这些命令能分别告诉你通用日志、慢查询日志、错误日志、binlog 是否启用,以及它们的路径。如果值是
OFF
或空,说明没开;
ON
且路径存在,才算真正生效。

永久开启日志:改配置文件最稳妥

临时用

SET GLOBAL
开启日志,MySQL 重启就失效,生产环境必须写进配置文件。
找到主配置文件(常见位置:
/etc/my.cnf
/etc/mysql/my.cnf
/etc/my.cnf.d/server.cnf
),在
[mysqld]
段下添加:

log-error = /var/log/mysql/error.log
(错误日志,建议必开)
general_log = ON
+
general_log_file = /var/log/mysql/general.log
(通用日志,记录所有语句,磁盘吃紧慎开)
slow_query_log = ON
+
slow_query_log_file = /var/log/mysql/slow.log
+
long_query_time = 2
(慢查日志,阈值按业务调,1~5 秒较常见)
log-bin = /var/lib/mysql/mysql-bin
(binlog,主从/恢复必需,但有约 1% 性能损耗)

改完务必

sudo systemctl restart mysqld
(或
service mysqld restart
),再用前面的
SHOW VARIABLES
验证。

动态开启日志:适合调试但不持久

不想重启服务?可以用 SQL 命令临时打开(仅对当前会话或全局生效):

开通用日志:
SET GLOBAL general_log = 'ON';
+
SET GLOBAL general_log_file = '/tmp/mysql-general.log';
开慢查日志:
SET GLOBAL slow_query_log = 'ON';
+
SET GLOBAL long_query_time = 1;
注意:
SET GLOBAL
不影响已存在的连接,新连接才生效;且只在本次运行周期有效
如果报错
ERROR 1238 (HY000): Variable 'general_log' is a read only variable
,说明配置文件里禁用了动态修改(如设置了
read_only
或启用了某些安全插件)

日志路径和权限最容易出问题

即使配置全对,日志也可能写不进去——90% 是路径或权限问题:

确保目录存在:
sudo mkdir -p /var/log/mysql
确保 MySQL 进程用户(通常是
mysql
)有写权限:
sudo chown mysql:mysql /var/log/mysql
避免写到根分区或
/tmp
:日志增长快,容易撑爆磁盘;推荐挂载独立小分区或用
logrotate
定期轮转
不要把日志和数据目录混放(比如都丢在
/var/lib/mysql
):一来难管理,二来某些备份工具会误删日志文件

binlog 和 error log 尤其敏感:路径写错会导致 MySQL 启动失败,直接卡在 service 启动阶段,查

journalctl -u mysqld
才能看到真实报错。

相关推荐