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:指定主机的查询
发布了274 篇原创文章 · 获赞 65 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qianglei6077/article/details/100140119