MySQL 的日志文件存放在哪里?

MySQL 日志位置由版本、安装方式和输出配置决定;错误日志常见 /var/log/mysql/,启用 FILE 输出的慢/通用日志相对路径以实际数据目录为基准。本文给出定位与配置方法。

最佳实践
MySQL 的日志文件存放在哪里?封面

快速定位:通过包管理器(APT/Yum)安装的 MySQL,错误日志通常在 /var/log/ 或 /var/log/mysql/ 下,名字类似 error.log、mysqld.log;慢查询、通用查询日志需同时启用并选择 FILE 输出,相对路径以实际数据目录(常见 /var/lib/mysql/)为基准。最准确的定位方式是查配置或问数据库本身。

用 SQL 直接问 MySQL

SHOW VARIABLES LIKE 'log_error';          -- 错误日志路径
SHOW VARIABLES LIKE 'slow_query_log_file'; -- 慢查询日志路径
SHOW VARIABLES LIKE 'general_log_file';    -- 通用查询日志路径
SHOW VARIABLES LIKE 'datadir';             -- 数据目录
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'general_log';
SHOW VARIABLES LIKE 'log_output';
SHOW VARIABLES LIKE 'log_error_services'; -- 支持该变量的版本核对错误日志组件

文件名变量有值不表示日志已启用或正在写文件;慢/通用日志还需核对开关及 log_output 的 FILE/TABLE/NONE。错误日志有独立组件与输出配置。发行版、容器、自定义安装的默认值各不相同。

常见默认位置

系统/安装方式 典型位置
Ubuntu/Debian(APT) /var/log/mysql/error.log
CentOS/RHEL(Yum) /var/log/mysqld.log
未指定路径的慢日志等 数据目录(常为 /var/lib/mysql/)
Docker 官方镜像 容器内 /var/log/mysql/ 或直出 stderr

配置文件在哪改

Debian 系通常在 /etc/mysql/mysql.conf.d/mysqld.cnf,RHEL 系在 /etc/my.cnf 或 /etc/my.cnf.d/:

[mysqld]
log_error = /var/log/mysql/error.log
slow_query_log = 1
log_output = FILE
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1

改完需要重启 MySQL 生效(部分参数支持 SET GLOBAL 动态修改)。

确定文件位置后,若要集中保留故障记录,可用观测云 日志采集器读取错误日志或慢查询日志。两类日志分别设置来源及解析规则,用新产生的样本检查时间、级别和 SQL 耗时;注意慢日志中的 SQL 可能包含敏感业务值。

常见问题(FAQ)

Q:为什么 /var/log/mysql/ 是空的?
A:可能日志被配置到了数据目录,或实例用 systemd 把输出导进了 journal(journalctl -u mysql 查看)。

Q:通用查询日志能长期开吗?
A:不建议。它记录所有 SQL,繁忙库上量极大,只应短期排查时开启。

Q:慢查询日志里的时间阈值怎么调?
A:支持的版本可 SET GLOBAL long_query_time = 0.5,作为新连接的默认值;当前会话需 SET SESSION。动态修改是否持久化要另行配置,具体按版本核对。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台