docker mysql容器怎么开启慢查询日志

来源:建站教程作者:新加坡程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《docker mysql容器怎么开启慢查询日志》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《docker mysql容器怎么开启慢查询日志》有用,将其分享出去将是对创作者最好的鼓励。

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

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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。