pt-kill 是一個(gè)優(yōu)秀的kill MySQL連接的一個(gè)工具,是percona toolkit的一部分,在因?yàn)榭臻e連接較多導(dǎo)致超過最大連接數(shù)、某個(gè)有問題的sql導(dǎo)致mysql負(fù)載很高時(shí),都需要將一些連接kill掉,這個(gè)工具主要就是這個(gè)用途。
1. 按user kill
/usr/bin/pt-kill --busy-time 15 --match-user="dbUSER1 | dbUSER2,..." --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log
注:測(cè)試通過按用戶來殺線程,注意--match-user多個(gè)用戶之間用 | 分隔。
2. 按query來源 host kill
/usr/bin/pt-kill --busy-time 15 --match-host="192.168.10.10 | 192.168.10.11" --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log
--ignore-host / --match-host
注:測(cè)試通過按來源host來殺線程,注意--match-host多個(gè)host之間用 | 分隔。
3. 按command kill
/usr/bin/pt-kill --busy-time 15 --match-command="query | Execute" --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log
/usr/bin/pt-kill --busy-time 15 --ignore-command="sleep | binlogdump" --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log
注:測(cè)試通過按command來殺掉線程,注意command的內(nèi)容一定要嚴(yán)格匹配大小寫,否則會(huì)殺不掉。 注意--match-command多個(gè)command之間用 | 分隔,否則會(huì)失效。
(command有:Query、Sleep、Binlog Dump、Connect、Delayed insert、Execute、Fetch、Init DB、Kill、Prepare、Processlist、Quit、Reset stmt、Table Dump)
4. 按state kill
/usr/bin/pt-kill --busy-time 15 --match-state="Locked | Sending data" --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log
注:測(cè)試通過按state 來殺掉線程,注意state 的內(nèi)容一定要嚴(yán)格匹配大小寫,否則會(huì)殺不掉。注意--match-state多個(gè)state之間用 | 分隔,否則會(huì)失效。
(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)
5. 按info關(guān)鍵字 kill
/usr/bin/pt-kill --busy-time 15 --match-info="SELECT | DELETE" --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log
注:測(cè)試通過按info來殺掉線程,注意info的內(nèi)容一定要嚴(yán)格匹配大小寫,否則會(huì)殺不掉。注意--match-info多個(gè)info之間用 | 分隔,否則會(huì)失效。
--ignore-info / --match-info
(info可以使用select、update、insert、delete來進(jìn)行匹配,并可使用"|"進(jìn)行多項(xiàng)匹配,如"select|SELECT|delete|DELETE|update|UPDATE"
6. 按訪問的dbname kill
/usr/bin/pt-kill --busy-time 15 --match-db="db1 | db2" --victim all --interval 1 --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log
--ignore-db / --match-db
注:測(cè)試通過按db來殺掉線程,注意db的內(nèi)容一定要嚴(yán)格匹配大小寫,否則會(huì)殺不掉。注意--match-db多個(gè)db之間用 | 分隔,否則會(huì)失效。
另: Action:
--kill 殺掉連接并且退出
--kill-query 只殺掉連接執(zhí)行的語句,但是線程不會(huì)被終止
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com