docker run -p 3306:3306 --name mysql  -e MYSQL_ROOT_PASSWORD=root  -e TZ="Asia/Shanghai" -v /data/mysql/conf:/etc/mysql/conf.d  -v /data/mysql/backup:/usr/local/backup -v /data/mysql/data:/var/lib/mysql  -d mysql:5.7.23 --lower_case_table_names=1

docker run -p <宿主机端口号>:<容器端口号> <其他选项> <镜像名>

MYSQL_ROOT_PASSWORD:数据库密码
/data/mysql/conf:映射物理卷的配置路径
/data/mysql/backup:映射物理卷的备份路径
/data/mysql/data:映射物理卷的数据路径

设置sql_mode

在conf目录下新建一个my.cnf

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

开启慢sql,在配置文件中加上:

slow_query_log = 1
slow_query_log_file = /usr/local/backup/mysql-slow.log
long_query_time = 5

1.即使你配置了 slow_query_logslow_query_log_file,你仍需要确保这些设置已经生效。在 MySQL 命令行中可以运行以下命令来检查当前的慢查询日志状态:

SHOW VARIABLES LIKE 'slow_query_log';

如果返回结果是 ON,表示慢查询日志功能已启用。如果是 OFF,则可以启用:

SET GLOBAL slow_query_log = 'ON';

2. 检查查询时间是否符合 long_query_time

你的 long_query_time 设置为 5 秒,所以查询的执行时间必须超过 5 秒才能被记录为慢查询。如果你运行 SELECT SLEEP(6); 并没有生成慢查询日志,可能是因为设置没有生效或日志没有正确写入。

你可以检查当前的 long_query_time 设置:

SHOW VARIABLES LIKE 'long_query_time';

如果返回的值不是 5 或其他你期望的值,可以通过以下命令进行修改:

SET GLOBAL long_query_time = 5;

3. 检查 MySQL 是否在使用正确的日志路径

你已经设置了 slow_query_log_file/usr/local/backup/mysql-slow.log,但需要确认 MySQL 现在是否正在使用这个路径。你可以通过以下命令检查:

SHOW VARIABLES LIKE 'slow_query_log_file';

这将显示 MySQL 当前使用的慢查询日志文件路径。如果输出的路径与配置不一致,可能需要重新设置并确保设置生效:

SET GLOBAL slow_query_log_file = '/usr/local/backup/mysql-slow.log';

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐