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

MySQL 错误日志默认在 /var/log/ 或 /var/log/mysql/(如 mysqld.log),未另设路径的其他日志默认写入数据目录 /var/lib/mysql/。本文给出定位与配置方法。

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

快速定位:通过包管理器(APT/Yum)安装的 MySQL,错误日志通常在 /var/log//var/log/mysql/ 下,名字类似 error.logmysqld.log;其他日志(慢查询、通用查询等)若开启时未指定路径,默认写到数据目录 /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';             -- 数据目录

这比猜路径可靠,因为发行版、容器、自定义安装的默认值各不相同。

常见默认位置

系统/安装方式 典型位置
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
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1

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

观测云对照

集中采集 MySQL 日志。 定位到日志文件后,用 DataKit 的 MySQL 集成采集错误日志与慢查询日志,慢日志经 Pipeline 解析出耗时、行数、SQL 语句等字段,可在日志查看器检索分析,还能用监控器对慢查询频次告警。

常见问题(FAQ)

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

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

Q:慢查询日志里的时间阈值怎么调?
A:改 long_query_time(秒,支持小数如 0.5),新连接生效。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台