在docker环境中运行的mysql容器,开启慢查询日志可以通过临时动态配置和永久修改配置文件两种方式实现,两种方式适用不同的使用场景,下面分别进行说明。

临时开启慢查询日志
临时开启方式不需要重启mysql容器,配置会在mysql服务重启后失效,适合临时排查问题的场景。首先需要进入运行中的mysql容器内部,执行以下命令进入容器:
docker exec -it mysql_container_name /bin/bash
进入容器后登录mysql服务,执行以下命令查看当前慢查询日志的配置状态:
-- 查看慢查询日志是否开启,默认值为OFF SHOW VARIABLES LIKE 'slow_query_log'; -- 查看慢查询日志的存储路径,默认一般为/var/lib/mysql/主机名-slow.log SHOW VARIABLES LIKE 'slow_query_log_file'; -- 查看慢查询的时间阈值,默认值为10秒,执行时间超过该值的sql会被记录 SHOW VARIABLES LIKE 'long_query_time'; -- 查看是否记录未使用索引的查询,默认值为OFF SHOW VARIABLES LIKE 'log_queries_not_using_indexes';
接下来执行以下命令开启慢查询日志,并设置相关参数:
-- 开启慢查询日志 SET GLOBAL slow_query_log = 'ON'; -- 设置慢查询日志文件路径,可根据实际需求调整 SET GLOBAL slow_query_log_file = '/var/lib/mysql/slow.log'; -- 设置慢查询时间阈值为2秒,执行时间超过2秒的sql会被记录 SET GLOBAL long_query_time = 2; -- 开启未使用索引查询的记录 SET GLOBAL log_queries_not_using_indexes = 'ON';
配置完成后可以再次执行查看命令确认配置已经生效,此时执行一条耗时超过2秒的sql,就可以在对应的日志文件中看到记录。
永久开启慢查询日志
永久配置方式需要修改mysql的配置文件,配置会在容器重启后依然生效,适合生产环境的长期使用。首先需要准备一份自定义的mysql配置文件,比如命名为my.cnf,内容如下:
[mysqld] # 开启慢查询日志 slow_query_log = ON # 慢查询日志文件路径 slow_query_log_file = /var/lib/mysql/slow.log # 慢查询时间阈值,单位秒 long_query_time = 2 # 记录未使用索引的查询 log_queries_not_using_indexes = ON
然后将这个配置文件挂载到docker mysql容器的/etc/mysql/conf.d/目录下,启动容器的命令示例如下:
docker run -d --name mysql_container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_password -v /local/path/my.cnf:/etc/mysql/conf.d/my.cnf -v /local/path/mysql_data:/var/lib/mysql mysql:latest
如果是已经存在的容器,可以停止容器后,通过docker rm删除容器,再使用上面的挂载命令重新创建容器,注意数据卷挂载路径要和之前一致,避免数据丢失。
查看慢查询日志
慢查询日志生成后,可以通过以下方式查看内容。如果是临时配置的场景,可以直接在容器内查看日志文件:
# 进入容器 docker exec -it mysql_container_name /bin/bash # 查看慢查询日志内容 cat /var/lib/mysql/slow.log
也可以使用mysqldumpslow工具分析慢查询日志,该工具是mysql自带的日志分析工具,可以统计慢查询的相关信息:
# 查看慢查询日志中耗时最长的10条sql mysqldumpslow -s t -t 10 /var/lib/mysql/slow.log
注意事项
- 慢查询日志文件会持续占用磁盘空间,需要定期清理或者设置日志轮转,避免磁盘被占满。
- 如果mysql容器使用的是非root用户运行,需要确保慢查询日志文件的目录有对应的写入权限,否则日志无法生成。
- 调整
long_query_time参数时,需要根据实际业务场景设置合理的值,过小会导致日志记录过多,过大会遗漏需要优化的sql。 - 修改配置文件后必须重启mysql容器才能让配置生效,临时配置的方式不需要重启,但重启后会丢失配置。
dockermysql慢查询日志slow_query_log修改时间:2026-06-30 09:21:32