记录一下那天晚上的排查过程。按经验打开了慢查询开关,跑了一周日志文件还是空的,可业务确实有接口要好几秒才返回。
把日志和配置对完,能解释这个现象的基本就这几处。阈值设得比真实慢查询时间还大。少数情况下是日志输出目标配置成了表而不是文件。
不容易想到的是,配置只改了会话级,连接重建后又失效。
第一件事是确认运行时的实际参数
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
白天有业务在跑,能验证的部分都压到了晚上做。
怎么算真的好了,看的是同一批现象。日志文件开始有记录,能抓到耗时超过阈值的语句,分析工具有数据可用。
提醒一点。改全局参数对已经建立的连接不一定立刻生效,验证时要用新连接;线上建议直接写进配置文件并重启确认。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。