MySQL出现运行时间过长的SQL(慢SQL),会使线上数据库压力倍增,影响业务稳定性及可用性
生产环境数据库出现运行时间过长的SQL,会影响数据库性能,如果同时出现多个类似SQL,则会影响数据库的可用性,从而导致业务不可用或体验差的情况。
在出现此类SQL的情况下,DBA人工干预需要一定的时间,在此期间如果SQL量比较大,且业务不停请求时,人工干预比较麻烦,无法及时处理。因此需要借助工具进行监控并自动kill超预期执行的SQL。
工具简介
pt-kill的主要使用场景简介如下
- 查杀select大于30s的会话
# 只打印-查杀select大于30s的会话
# 执行杀操作-查杀select大于30s的会话
- 查杀某IP来源的会话
# 只打印-查杀某IP来源的会话
# 执行杀操作-查杀某IP来源的会话
- 查杀指定用户的会话
# 只打印-查杀指定用户的会话
# 执行杀操作-查杀指定用户的会话
- 杀掉正在进行指定操作的sql
# 只打印-杀掉正在进行filesort的sql
# 执行杀操作-杀掉正在进行filesort的sql
# 只打印
# 执行杀操作
部署计划
对线上MySQL数据库部署pt-kill工具,并每分钟运行kill超过30s的SQL,并将查杀结果记录在日志中,定期推送kill的SQL至业务方