pt-kill 用法記錄
# 參考資料
Percona-Toolkit系列之pt-kill殺會話利器
http://www.fordba.com/percona-toolkit-pt-kill.html
1.pt-kill
生產環境中我們時常遇到這樣的情況,數據庫性能惡劣,需要馬上殺掉全部會話,不然數據庫就掛起來。我們可以先找show processlist的輸出來殺會話,但是比較麻煩。pt-kill為我們解決了殺會話問題。
2.常用殺會話場景
-- 1、每10秒檢查一次,發現有 Query 的進程就給干掉 # 只打印-每10秒檢查一次,發現有 Query 的進程就給干掉 pt-kill --host=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-command="Query" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/1.log # 執行殺操作 pt-kill --host=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-command="Query" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/kill.log
-- 2、查殺select大於30s的會話 # 只打印-查殺select大於30s的會話 pt-kill --host=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-info "select|SELECT" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log # 執行殺操作-查殺select大於30s的會話 pt-kill --host=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-info "select|SELECT" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
-- 3、查殺某IP來源的會話 # 只打印-查殺某IP來源的會話 pt-kill --host=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-host "192.168.65.129" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log # 執行殺操作-查殺某IP來源的會話 pt-kill --host=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-host "192.168.65.129" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
-- 4、查殺訪問某用戶的會話 # 只打印-查殺訪問某用戶的會話 pt-kill --host=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-user "u2" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log # 執行殺操作-查殺訪問某用戶的會話 pt-kill --host=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --match-user "u2" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log
-- 5、殺掉正在進行filesort的sql # 只打印-殺掉正在進行filesort的sql pt-kill --host=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --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=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --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 # 只打印 pt-kill --host=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --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=192.168.65.128 --port=3306 --user=root --password=rootpwd --match-db='db222' --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