在小皮面板里查看和清理 MySQL 慢查询日志,需要先做配置再谈维护:慢日志默认不开启。你需要在面板的「软件管理 → MySQL → 配置修改」中给 my.ini 加上 slow_query_log = ON 和 long_query_time = 2 再重启 MySQL;查看时直接读取 data 目录下的 slow.log 文件,或者查询 mysql.slow_log 表;清理时不要直接删除正在写入的日志文件,要先关闭慢日志开关或执行 TRUNCATE,再把文件清空或改名归档。
小皮面板怎么开启 MySQL 慢查询日志?
结论:慢查询日志默认关闭,必须修改 my.ini 后重启 MySQL 才会生效,只改运行时变量重启后会丢失。
操作路径:打开小皮面板 →「软件管理」→ 找到 MySQL → 点击「配置修改」(等价于直接编辑 my.ini,Windows 版通常在 D:\phpstudy_pro\Extensions\MySQL5.7.26\my.ini,Linux 版通常在 /www/server/mysql/my.cnf,以面板显示的实际路径为准)。在 [mysqld] 段落下加入四行:
slow_query_log = ON
slow_query_log_file = D:/phpstudy_pro/Extensions/MySQL5.7.26/data/slow.log
long_query_time = 2
log_queries_not_using_indexes = OFF
三个参数的含义分别是:slow_query_log 是慢日志总开关;long_query_time 是记录阈值,单位秒,MySQL 默认 10 秒,线上建议设成 1~2 秒;log_queries_not_using_indexes 控制是否记录没有走索引的 SQL,打开后日志量会成倍上涨,排查期临时开启即可。
改动完成后必须在面板里重启 MySQL 服务。Windows 下路径要写成正斜杠 /,写成反斜杠 \ 会被当成转义符导致启动失败。重启后登录 MySQL 执行 SHOW VARIABLES LIKE 'slow_query_log%'; 和 SHOW VARIABLES LIKE 'long_query_time'; 验证,两项返回值与配置一致才算成功。
小皮面板怎么查看慢查询日志?
结论:查看慢日志有三种方式——在面板文件管理里直接打开 slow.log、在命令行读取 slow.log、查询 mysql.slow_log 表;具体用哪种取决于 log_output 参数。
第一种方式最直观:面板「网站/文件」→ 文件管理,进入 MySQL 的 data 目录,找到 slow.log 直接下载或在线预览。日志格式是纯文本,一条记录包含 Query_time(执行耗时)、Lock_time(锁等待)、Rows_sent(返回行数)、Rows_examined(扫描行数)和执行语句,Rows_examined 远大于 Rows_sent 基本就是索引缺失。
第二种适合做统计。Windows 版在 MySQL 的 bin 目录下自带 mysqldumpslow,执行 mysqldumpslow -s t -t 10 slow.log 就能按总耗时排出前 10 条慢 SQL;-s c 按出现次数排序,-s at 按平均耗时排序。Linux 版同样带有该脚本,路径在 MySQL 的 bin 目录。
第三种是当 log_output = TABLE 时,日志会写进 mysql 库的 slow_log 表,直接执行 SELECT start_time, query_time, sql_text FROM mysql.slow_log ORDER BY start_time DESC LIMIT 20; 即可查询,代价是这些写入会额外增加数据库负载,生产环境一般仍用 FILE 模式。
慢查询日志怎么清理?为什么不能直接删文件?
结论:数据库正在写入的 slow.log 文件不要直接删除,Windows 下文件被 MySQL 进程占用会提示占用或删除失败,Linux 下直接 rm 后磁盘空间不释放,因为句柄还开着。
安全的清理流程分三步:第一步关开关,执行 SET GLOBAL slow_query_log = OFF;(或在面板里把配置改为 OFF 后重启);第二步清空或归档,Linux 下用 : > slow.log 或 cat /dev/null > slow.log 原地清空,Windows 下用 type nul > slow.log 覆盖,也可以把文件重命名成 slow-20240601.log 归档保留;第三步重新打开开关 SET GLOBAL slow_query_log = ON;。
如果 log_output = TABLE,清理方式是 TRUNCATE TABLE mysql.slow_log;。注意 slow_log 表默认使用 CSV 引擎,不支持 DELETE,只能用 TRUNCATE。
长期维护建议把 log_queries_not_using_indexes 保持关闭,只保留 long_query_time 阈值过滤;慢日志超过 200MB 就归档一次,避免日志文件拖慢磁盘 IO。规律是:每次大促、版本发布后跑一次 mysqldumpslow -s t -t 10,把 TOP10 慢 SQL 加到索引优化清单里,慢日志才算真正用起来。
以上步骤在小皮面板(phpStudy)的 Windows 版和 Linux 版通用,差异只在配置文件和日志的具体路径,以面板「配置修改」页显示的路径为准。遇到面板操作、MySQL 调优的具体问题,可以在 GJ 站长论坛的运维板块发帖交流,附上慢日志片段和 EXPLAIN 结果,排查效率会高很多。