Percona-Toolkit系列(15) --- pt-kill

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:指定主機的查詢
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章