MySQL升级后出现慢查询统计失效的情况,大多是因为升级过程中性能字典的存储结构发生变化,旧版本的统计数据和当前版本的字典不兼容,导致慢查询相关的计数器、日志配置无法正常加载。此时需要重置性能字典并重新配置慢查询相关参数,才能恢复统计功能。
慢查询统计失效的常见原因
升级后慢查询统计失效通常不是功能本身损坏,而是以下两类原因导致:
- 性能字典版本不匹配:MySQL 5.7到8.0、或者小版本跨大版本升级时,
performance_schema库下的字典表结构会调整,旧数据无法被新版本识别,慢查询相关的统计计数器就会失效。 - 配置文件未同步:升级后默认的慢查询配置参数可能发生变化,或者旧配置文件中的参数在新版本中被废弃,导致慢查询日志没有正常开启。
重置MySQL性能字典的步骤
重置性能字典前需要先做好数据备份,避免误操作丢失其他性能统计数据,操作建议在业务低峰期执行。
1. 停止MySQL服务
不同系统的停止命令略有区别,以Linux系统为例:
# systemd管理的MySQL服务 sudo systemctl stop mysqld # 老版本init.d管理的MySQL服务 sudo /etc/init.d/mysqld stop
2. 备份原有性能字典数据
性能字典数据存储在MySQL的数据目录下,默认路径为/var/lib/mysql/performance_schema,先将该目录备份到其他位置:
# 备份performance_schema目录 sudo cp -r /var/lib/mysql/performance_schema /var/lib/mysql/performance_schema_backup
3. 删除旧的性能字典文件
删除performance_schema目录下的所有文件,MySQL重启后会自动重新初始化性能字典:
# 进入MySQL数据目录 cd /var/lib/mysql # 删除performance_schema下的所有文件 sudo rm -rf performance_schema/*
4. 启动MySQL服务
启动服务后,MySQL会自动重新生成兼容当前版本的性能字典表和数据:
sudo systemctl start mysqld
重新开启慢查询统计功能
性能字典重置完成后,需要重新配置慢查询相关参数,确保统计功能正常开启。
1. 动态配置慢查询参数
可以先通过SQL命令动态配置,验证功能是否正常:
-- 开启慢查询日志 SET GLOBAL slow_query_log = 'ON'; -- 设置慢查询阈值,单位秒,这里设置为1秒,执行超过1秒的语句会被记录 SET GLOBAL long_query_time = 1; -- 设置慢查询日志存储路径,根据实际环境调整 SET GLOBAL slow_query_log_file = '/var/lib/mysql/slow.log'; -- 记录未使用索引的查询 SET GLOBAL log_queries_not_using_indexes = 'ON';
2. 持久化配置到配置文件
动态配置重启后会失效,需要把参数写入MySQL配置文件my.cnf或者my.ini:
[mysqld] # 慢查询日志开关 slow_query_log = ON # 慢查询阈值,单位秒 long_query_time = 1 # 慢查询日志路径 slow_query_log_file = /var/lib/mysql/slow.log # 记录未使用索引的查询 log_queries_not_using_indexes = ON
3. 验证慢查询统计是否正常
可以执行一条超过阈值的查询,然后查看慢查询日志是否记录:
-- 执行一条睡眠2秒的查询,超过设置的1秒阈值 SELECT SLEEP(2); -- 查看慢查询日志路径 SHOW VARIABLES LIKE 'slow_query_log_file'; -- 查看慢查询是否开启 SHOW VARIABLES LIKE 'slow_query_log';
如果慢查询日志中出现了刚才的SELECT SLEEP(2)记录,说明慢查询统计已经恢复正常。
注意事项
- 重置性能字典会清空所有
performance_schema的历史统计数据,包括语句执行统计、等待事件统计等,非必要情况不要频繁操作。 - 升级前建议先查看官方版本的升级文档,确认性能字典的兼容性说明,部分小版本升级不需要重置字典,只需要执行
mysql_upgrade命令即可修复。 - 如果重置字典后慢查询还是无法统计,需要检查MySQL的错误日志,查看是否有性能字典初始化失败的相关报错,根据报错信息调整数据目录的权限。
MySQL慢查询统计性能字典重置slow_query_log修改时间:2026-07-17 00:09:31