记录一下那天晚上的排查过程。按经验打开了慢查询开关,跑了一周日志文件还是空的,可业务确实有接口要好几秒才返回。

把日志和配置对完,能解释这个现象的基本就这几处。阈值设得比真实慢查询时间还大。少数情况下是日志输出目标配置成了表而不是文件。

不容易想到的是,配置只改了会话级,连接重建后又失效。

第一件事是确认运行时的实际参数

mysql -e 'show variables like \"slow_query_log%\"'

调整阈值到一秒以内

mysql -e 'set global long_query_time=0.5'

接着把输出方式改成文件

mysql -e 'set global log_output=\"FILE\"'

剩下的就是确认日志路径和写入

tail -50 /var/log/mysql/slow.log

白天有业务在跑,能验证的部分都压到了晚上做。

怎么算真的好了,看的是同一批现象。日志文件开始有记录,能抓到耗时超过阈值的语句,分析工具有数据可用。

提醒一点。改全局参数对已经建立的连接不一定立刻生效,验证时要用新连接;线上建议直接写进配置文件并重启确认。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189