MySQL自我保护工具--pt-kill
数据库干货铺
共 3181字,需浏览 7分钟
·
2021-12-11 19:24
![](https://filescdn.proginn.com/6db2d161d19fb5f085e409d48868668f/651df12485249c837f38a94723710623.webp)
MySQL出现运行时间过长的SQL(慢SQL),会使线上数据库压力倍增,影响业务稳定性及可用性
1. 背景
生产环境数据库出现运行时间过长的SQL,会影响数据库性能,如果同时出现多个类似SQL,则会影响数据库的可用性,从而导致业务不可用或体验差的情况。
在出现此类SQL的情况下,DBA人工干预需要一定的时间,在此期间如果SQL量比较大,且业务不停请求时,人工干预比较麻烦,无法及时处理。因此需要借助工具进行监控并自动kill超预期执行的SQL。
2. 工具介绍
pt-kill的主要使用场景简介如下
2.1 查杀select大于30s的会话
# 只打印-查杀select大于30s的会话
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-info "select|SELECT" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log
# 执行杀操作-查杀select大于30s的会话
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-info "select|SELECT" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
2.2 查杀某IP来源的会话
# 只打印-查杀某IP来源的会话
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-host "192.168.65.129" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log
# 执行杀操作-查杀某IP来源的会话
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-host "192.168.65.129" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
2.3 查杀指定用户的会话
# 只打印-查杀指定用户的会话
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-user "u2" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log
# 执行杀操作-查杀指定用户的会话
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-user "u2" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
查杀进行filesort的SQL
# 只打印-杀掉正在进行filesort的sql
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-command Query --match-state "Sorting result" --run-time 1 --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log
# 执行杀操作-杀掉正在进行filesort的sql
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-command Query --match-state "Sorting result" --run-time 1 --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
查杀Creating sort index的SQL
# 只打印
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-command Query --match-state "Creating sort index" --run-time 1 --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log
# 执行杀操作
pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-command Query --match-state "Creating sort index" --run-time 1 --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
3. 注意
对线上MySQL数据库部署pt-kill工具,需要与业务方沟通相关策略,并将查杀结果记录在日志中定期推送kill的SQL至相关人员
![](https://filescdn.proginn.com/31743850dd77f7531f8f3a9e852c396c/0451526e283f4c4f8d13aac90f03584a.webp)
2. mysql8.0新增用户及加密规则修改的那些事
3. 比hive快10倍的大数据查询利器-- presto
4. 监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库
5. PostgreSQL主从复制--物理复制
6. MySQL传统点位复制在线转为GTID模式复制
![](https://filescdn.proginn.com/2b5f72fd5ef2ebf9b2fe9ac7e2f17ac7/8b6f1911e05db9f46425e371ffc2a089.webp)
![](https://filescdn.proginn.com/1f2b84408cbf84c888c647aac1deb004/eace0612123046c27a7492fbde77a439.webp)
![](https://filescdn.proginn.com/b837f7b4af106dd4937984449b55f112/ec0eff9754803289f2972521337cf969.webp)
评论
PeerGuardian2P2P保护工具
PeerGuardian2是Methlabs设计的一种在Windows上执行的IP拦截软体,主要支援多名单、名单编辑、自动更新及拦截所有来自IPv4的连线(TCP,UDP,ICMP等等),这使它成为保
PeerGuardian2P2P保护工具
0
OpenRASP应用自我保护安全解决方案
OpenRASP背景最近几年,Web攻击手段开始变得复杂,攻击面也越来越广。传统的安全防护手段,WAF、IDS等等,大多是基于规则,已经不能满足企业对安全的基本需求。Gartner在2014年提出了"
OpenRASP应用自我保护安全解决方案
0