mysql安装完成后配置日志文件与慢查询日志

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

确认 MySQL 是否已启用 general_log

安装完 MySQL 后,默认通常

general_log
是关闭的,它记录所有执行的 SQL 语句,适合调试但不建议长期开启。检查是否启用:
SELECT @@general_log;
返回
0
表示关闭;
1
表示开启。日志文件路径由
general_log_file
变量决定:
SELECT @@general_log_file;
常见默认值是
/var/lib/mysql/hostname.log
(Linux)或
C:\ProgramData\MySQL\MySQL Server X.X\Data\hostname.log
(Windows)。若需开启,执行:
SET GLOBAL general_log = 1;
注意:该设置重启后失效,要永久生效需写入配置文件。

配置 slow_query_log 文件路径与阈值

慢查询日志是性能分析的关键,必须显式配置才能生效。先确认当前状态:

SELECT @@slow_query_log, @@long_query_time, @@slow_query_log_file;
@@slow_query_log
0
表示未启用;
@@long_query_time
默认是
10.000000
秒,对线上服务通常过高,建议调为
1
0.5
@@slow_query_log_file
若为空,MySQL 会自动生成(如
/var/lib/mysql/hostname-slow.log
),但路径不可控。永久配置需编辑
my.cnf
(Linux)或
my.ini
(Windows),在
[mysqld]
段添加:
slow_query_log = 1<br>slow_query_log_file = /var/log/mysql/mysql-slow.log<br>long_query_time = 1<br>log_queries_not_using_indexes = 1
注意:
log_queries_not_using_indexes
会额外记录没走索引的查询,可能显著增大日志体积,仅调试期建议开启。

确保日志目录存在且 MySQL 有写权限

MySQL 进程(通常是

mysql
用户)必须对日志路径有写权限,否则启动失败或日志静默丢失。常见错误现象:

MySQL 无法启动,错误日志中出现
Can't open the mysql.plugin table
File '/var/log/mysql/mysql-slow.log' not found (Errcode: 13)
手动执行
SET GLOBAL slow_query_log = 1
返回成功,但文件始终为空
解决方法:
sudo mkdir -p /var/log/mysql<br>sudo chown mysql:mysql /var/log/mysql<br>sudo chmod 755 /var/log/mysql
Windows 下需确认 MySQL 服务以具有写权限的账户运行(如 Local System 或指定用户),并确保路径所在磁盘未设只读属性。

验证日志是否真实写入

配置修改后必须重启 MySQL(

sudo systemctl restart mysqld
sudo service mysql restart
),不能仅靠
SET GLOBAL
。验证方式:

执行一条明显超时的查询:
SELECT SLEEP(2);
再检查
slow_query_log_file
对应文件末尾是否有新条目
tail -f /var/log/mysql/mysql-slow.log
实时观察(Linux)
注意:如果启用了
log_output = TABLE
(默认是
FILE
),日志会写入
mysql.slow_log
表,而非文件,此时需查表:
SELECT * FROM mysql.slow_log ORDER BY start_time DESC LIMIT 5;
真正生效的标志是:查询时间 ≥
long_query_time
、且日志文件(或表)中出现对应记录。

配置慢日志最易忽略的是权限和

log_output
模式切换——前者导致日志“静默失败”,后者让日志不见于文件却存在于表中,排查时容易误判为配置无效。

相关推荐