MySQL 的日志文件存放在哪里?
MySQL 错误日志默认在 /var/log/ 或 /var/log/mysql/(如 mysqld.log),未另设路径的其他日志默认写入数据目录 /var/lib/mysql/。本文给出定位与配置方法。
快速定位:通过包管理器(APT/Yum)安装的 MySQL,错误日志通常在 /var/log/ 或 /var/log/mysql/ 下,名字类似 error.log、mysqld.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),新连接生效。