MySQL 镜像在运行时,日志是排查问题和监控数据库行为的重要工具。通过调整日志级别,可以控制输出信息的详细程度,便于开发调试或减少生产环境的日志量。
1. 使用配置文件设置日志级别
最常见的方式是在 MySQL 的配置文件 my.cnf 或 my.ini 中设置日志相关参数。Docker 镜像通常会挂载自定义配置文件来实现这一目的。
在 [mysqld] 段落下添加以下配置:
log_error_verbosity = 2:设置错误日志的详细程度(1=error, 2=error+warning, 3=error+warning+note) general_log = ON:开启通用查询日志(记录所有SQL语句) general_log_file = /var/log/mysql/general.log:指定通用日志路径 slow_query_log = ON:开启慢查询日志 long_query_time = 2:定义慢查询阈值(单位:秒) log_slow_verbosity = query_plan,explain:增加慢查询日志的详细信息(可选)示例 my.cnf 配置片段:
[mysqld] log_error_verbosity = 3 general_log = ON general_log_file = /var/log/mysql/query.log slow_query_log = ON long_query_time = 1 log_warnings = 2
2. Docker 环境下的日志配置方法
使用官方 MySQL 镜像时,可通过挂载配置文件和日志目录来生效设置。
将自定义 my.cnf 文件挂载到容器内的 /etc/mysql/conf.d/ 目录 确保日志目录存在并有写权限,例如挂载宿主机的 /logs/mysqlDocker 运行命令示例:
docker run -d \ --name mysql-container \ -v ./my.cnf:/etc/mysql/conf.d/my.cnf:ro \ -v /logs/mysql:/var/log/mysql \ -e MYSQL_ROOT_PASSWORD=your_password \ mysql:8.0
3. 动态调整运行时日志设置
对于已运行的实例,部分日志参数支持动态修改,无需重启服务。
SET GLOBAL general_log = 'ON';:临时开启通用日志 SET GLOBAL log_error_verbosity = 3;:调整错误日志级别 SET GLOBAL slow_query_log = 'ON';:开启慢查询日志注意:某些版本中 log_error_verbosity 不支持动态修改,需在配置文件中设定。
查看当前日志设置:
SHOW VARIABLES LIKE '%log%';
基本上就这些。根据实际需求选择合适的日志级别,避免在生产环境中长期开启详细日志造成性能损耗或磁盘占用过高。合理配置后,既能保障可观测性,又能维持系统稳定。
