首页 > 其他分享 >Percona-Toolkit系列之pt-kill杀会话利器

Percona-Toolkit系列之pt-kill杀会话利器

时间:2023-06-01 10:57:47浏览次数:28  
标签:tmp log pt -- pid Toolkit 杀会话 kill

1.pt-kill

生产环境中我们时常遇到这样的情况,数据库性能恶劣,需要马上杀掉全部会话,不然数据库就挂起来。我们可以先找show processlist的输出来杀会话,但是比较麻烦。pt-kill为我们解决了杀会话问题。

2常用杀会话场景

2.1按照用户杀会话

pt-kill --host=192.168.56.103 --user=root --password=111111 --port=3306 --busy-time 15   --match-user="nice|dbuser01|dbuser02" --victim all --interval 1 --kill  --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log

2.2按照会话连接的主机杀会话

pt-kill --host=192.168.56.103 --user=root --password=111111 --port=3306 --busy-time 15   --match-host="192.168.56.1 | 192.168.56.103" --victim all --interval 1 --kill  --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log

2.3. 按照command匹配杀会话

pt-kill --host=192.168.56.103 --user=root --password=111111 --port=3306 --busy-time 15 --match-command="query|Execute" --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log

注:测试通过按command来杀掉线程,注意command的内容一定要严格匹配大小写,否则会杀不掉。 注意--match-command多个command之间用 | 分隔,否则会失效。
Query,Sleep,Binlog Dump,Connect,Delayed insert,Execute,Fetch,Init DB,Kill,Prepare,Processlist,Quit,Reset stmt,Table Dump

2.4按state杀会话

pt-kill --host=192.168.56.103 --user=root --password=111111 --port=3306  --busy-time 15 --match-state="Locked | Sending data" --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log

 

注:测试通过按state 来杀掉线程,注意state 的内容一定要严格匹配大小写,否则会杀不掉。注意--match-state多个state之间用 | 分隔,否则会失效。
(state类型有:Locked,login,copy to tmp table,Copying to tmp table,Copying to tmp table on disk,Creating tmp table,executing,Reading from net,Sending data,Sorting for order,Sorting result,Table lock,Updating)

2.5 按info关键字 kill

pt-kill --host=192.168.56.103 --user=root --password=111111 --port=3306 --busy-time 15 --match-info="SELECT | DELETE" --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log

注:测试通过按info来杀掉线程,注意info的内容一定要严格匹配大小写,否则会杀不掉。注意--match-info多个info之间用 | 分隔,否则会失效。
--ignore-info / --match-info
(info可以使用select、update、insert、delete来进行匹配,并可使用"|"进行多项匹配,如"select|SELECT|delete|DELETE|update|UPDATE")

2.6按访问的dbname kill

pt-kill --host=192.168.56.103 --user=root --password=111111 --port=3306 --busy-time 15 --match-db="db1 | db2"  --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log

注:测试通过按db来杀掉线程,注意db的内容一定要严格匹配大小写,否则会杀不掉。注意--match-db多个db之间用 | 分隔,否则会失效

2.7杀掉全部外部连接

2.7.1拼sql

root@localhost [(none)] 08:06:24>>> select concat('KILL ',id,';') from information_schema.processlist into outfile '/tmp/kill.sql';
Query OK, 4 rows affected (0.00 sec)

root@localhost [(none)] 08:06:44>>>source /tmp/kill.sql
ERROR 1094 (HY000): Unknown thread id: 1
Query OK, 0 rows affected (0.00 sec)

ERROR 1317 (70100): Query execution was interrupted
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    34
Current database: *** NONE ***

Query OK, 0 rows affected (0.00 sec)

2.7.2 mysqladmin工具

mysqladmin -uroot -p111111 -h192.168.56.103 processlist|awk -F "|" '{print $2}'|egrep "[0-9][0-9]*"|xargs -n 1 mysqladmin -uroot -p111111 -h192.168.56.103 kill

2.7.3 循环一把

for id in `mysqladmin -uroot -p111111 -h192.168.56.103 processlist|awk -F "|" '{print $2}'|egrep "[0-9][0-9]*"`
do
   mysqladmin -uroot -p111111 -h192.168.56.103 kill ${id}
done

标签:tmp,log,pt,--,pid,Toolkit,杀会话,kill
From: https://www.cnblogs.com/lkj371/p/17448285.html

相关文章

  • jQuery 是javascript的一个库(常用插件、处理器)
    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validationjQuery就是javascript的一个库,把我们常用的一些功能进行了封装,方便我们来调用,提高我们的开发效率。极大地简化了JavaScript编程。Javascipt跟jQuery的区别:Javascript是一门编程语言,我们用......
  • rpm、yum、gpt的关系是什么
    RPM、Yum和APT是三种不同的软件包管理系统,它们在不同的操作系统和发行版中使用,并具有不同的工作原理。下面是它们之间的关系和作用:RPM(RedHatPackageManager):RPM是一种软件包管理系统,最初由RedHat开发。它使用.rpm文件格式来打包、安装、更新和删除软件包。RPM通常用于基于RP......
  • JavaScript原生实现《贪吃蛇》
    概述JavaScript原生实现《贪吃蛇》,每吃掉一个食物,蛇的身体会变长,食物会重新换位置。详细贪吃蛇大家都不陌生吧~简单做一个。一、思路1.让我们的小蛇动起来2.随机生成食物3.每吃掉一个食物,蛇的身体会变长,食物会重新换位置html界面<divclass="face"><!--小蛇移......
  • Javascript --常用技巧
    1)使用!!将变量转换成布尔类型有时,我们需要检查一些变量是否存在,或者它是否具有有效值,从而将它们的值视为true。对于做这样的检查,你可以使用||(双重否定运算符),它能自动将任何类型的数据转换为布尔值,只有这些变量才会返回false:0,null,"",undefined或NaN,其他的都返回true。我们来看看......
  • JavaScript中几种 获取元素的方式
    1.根据id获取元素document.getElementById("id属性的值");2.根据标签名字获取元素document.getElementsByTagName("标签的名字");3.根据name属性的值获取元素document.getElementsByName("name属性的值");4.根据类样式的名字获取元素document.getElementsByClassName("类样式的名......
  • javascript 的 事件类型(事件)
    事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行。事件是文档或者浏览器窗口中发生的,特定的交互瞬间。事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字。事件是javaScript和DOM之间交互的桥梁。你若触发,我便执行——事件发生,调用......
  • [GPT4]列举 chatGPT 可以做到哪些方面的事情
    ChatGPT可以执行多种任务和方面的事情,以下是其中的一些示例:自然语言处理概述、总结、翻译文本抽取关键信息和要点提供语法和语言建议问答系统回答技术问题和非技术问题提供知识库查询和解答针对各种问题提供建议和解决方案学习和发现提供编程示例和代码片段......
  • chatgpt~bingAI帮我解决flask错误
    出错信息我使用flask时,运行后出现下面的错误:Traceback(mostrecentcalllast):File"D:/github/lind-python/test-web.py",line1,in<module>fromflaskimportFlaskFile"C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-pa......
  • [GPT4]作为一个大龄程序员,如何提升自己未来的竞争力?
    作为一个大龄程序员,提升自己的竞争力至关重要。以下是一些建议,可以帮助你在职场上保持竞争力和不断壮大技能库:持续学习学习新技术:紧跟技术趋势,如人工智能、大数据、区块链等领域。获得相关证书:如AWS、Azure、GoogleCloud等云服务提供商的认证或者PMP等项目管理认证。观看......
  • Computing the depth plane
    ......