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
:指定主机的查询