pt-kill
pt-kill:官方地址
說明
用途:KILL MySQL指定查詢。
語法:
pt-kill [OPTIONS] [DSN]
其主要是通過SHOW PROCESSLIST
獲取滿足條件的查詢、連接並KILL。
具體例子
1.kill運行時間超過60s的查詢
pt-kill --busy-time 60 --kill h=localhost,p=123,P=3306,u=root
2.僅顯示運行時間超過60s的查詢不KILL
pt-kill --busy-time 60 --print h=localhost,p=123,P=3306,u=root
3.檢查休眠進程並每隔10skill一次
pt-kill --match-command Sleep --kill --victims all --interval 10 h=localhost,p=123,P=3306,u=root
4.打印所有進程
pt-kill --match-state login --print --victims all h=localhost,p=123,P=3306,u=root
5.指定文件
將SHOW PROCESSLIST
返回結果輸出到文件,在對文件進行分析
[root@BigData ~]# mysql -uroot -p123 -e "SHOW PROCESSLIST" > proclist.txt
[root@BigData ~]# pt-kill --test-matching proclist.txt --busy-time 60 --print
常用的選項:
--busy-time
:運行時間--idle-time
:空閒時間--victims
:可選值:oldest(僅kill運行時間最長的那個查詢),all(kill所有查詢),all-but-oldest(kill除了運行時間最長的那個查詢以外的其他查詢)--create-log-table
:創建表用於存儲kill日誌
表結構如下:
CREATE TABLE kill_log (
kill_id int(10) unsigned NOT NULL AUTO_INCREMENT,
server_id bigint(4) NOT NULL DEFAULT '0',
timestamp DATETIME,
reason TEXT,
kill_error TEXT,
Id bigint(4) NOT NULL DEFAULT '0',
User varchar(16) NOT NULL DEFAULT '',
Host varchar(64) NOT NULL DEFAULT '',
db varchar(64) DEFAULT NULL,
Command varchar(16) NOT NULL DEFAULT '',
Time int(7) NOT NULL DEFAULT '0',
State varchar(64) DEFAULT NULL,
Info longtext,
Time_ms bigint(21) DEFAULT '0', # NOTE, TODO: currently not used
PRIMARY KEY (kill_id)
) DEFAULT CHARSET=utf8
--query-id
:指定查詢ID,和pt-query-digest
輸出結果中的ID
列相同--run-time
:該命令運行時間--match-command
:匹配指定命令
常用命令如下:
Query
Sleep
Binlog Dump
Connect
Delayed insert
Execute
Fetch
Init DB
Kill
Prepare
Processlist
Quit
Reset stmt
Table Dump
--match-db
:指定數據庫的查詢--match-host
:指定主機的查詢