PT-Kill:让您的MySQL数据库性能飙升 mysql



cd  /opt

https://www.percona.com/downloads/percona-toolkit/LATEST/

yum install percona-toolkit-3.5.2-2.el7.x86_64.rpm -y


1.线程或者会话的重要参数

举几个匹配例子如下:

(1)按照命令command查杀线程

--match-command多个command之间用 | 分隔,否则会失效。

command类型:Query、Sleep、Binlog Dump、Connect、Delayed insert、Execute、Fetch、Init DB、Kill、Prepare、Processlist、Quit、Reset stmt、Table Dump

(2)按state 来杀掉线程

state类型有:Locked、login、copy to tmp table、Copying to tmp table、Copying to tmp table on disk、Creating tmp table、executing、Reading from net、Sending data、Sorting for order、Sorting result、Table lock、Updating

注意state 的内容一定要严格匹配大小写,否则会杀不掉。注意--match-state多个state之间用 | 分隔,否则会失效。

(3)按info关键字来查杀线程

通过按info来杀掉线程,注意info的内容一定要严格匹配大小写,否则会杀不掉。注意--match-info多个info之间用 | 分隔,否则会失效。

--ignore-info 不匹配

--match-info 匹配

info可以使用select、update、insert、delete来进行匹配,并可使用"|"进行多项匹配,如"select|SELECT|delete|DELETE|update|UPDATE"

(4)按照访问来源host/ip查杀线程

--ignore-host/--match-host

(5)按照DB来查杀线程

--ignore-db/--match-db

(6)按照数据库用户

--ignore-user/--match-user

2.行为参数

Action:

--kill 杀掉连接并且退出

--kill-query 只杀掉连接执行的语句,但是线程不会被终止

--print 打印满足条件的语句

3.其它重要参数

--interval 运行检查query的间隔,

--victim 有三种情况:

oldest (默认值),只杀最老的查询(最先发起的最长时间) 。这是防止被查杀是不是真的长时间运行的查询,他们只是长期等待 。这种种匹配按时间查询,杀死一个时间最高值 。

all 杀掉所有满足的线程

all-but-oldest 杀死所有,但最长的保留不杀

--busy-time 批次查询已运行的时间超过这个时间的线程;

--idle-time 杀掉sleep 了多少时间的连接线程,必须在--match-command sleep时才有效


# 使用示例

1.查杀select大于30s的会话

-只打印-查杀select大于30s的会话

pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-info "select|SELECT" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log

-执行杀操作-查杀select大于30s的会话

pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-info "select|SELECT" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log


2.查杀某IP来源的会话

-只打印-查杀某IP来源的会话

pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-host "192.168.65.129" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log

-执行杀操作-查杀某IP来源的会话

pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-host "192.168.65.129" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log


3.查杀指定用户的会话

-只打印-查杀指定用户的会话

pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-user "u2" --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log

-执行杀操作-查杀指定用户的会话

pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-user "u2" --busy-time 30 --victims all --interval 10 --daemonize --kill --log=/tmp/pt_select_kill.log


4.杀掉正在进行指定操作的sql

-只打印-杀掉正在进行filesort的sql

pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-command Query --match-state "Sorting result" --run-time 1 --busy-time 30 --victims all --interval 10 --daemonize --print --log=/tmp/pt_select.log


5.执行杀操作-杀掉正在进行filesort的sql

pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --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


6.只打印Creating sort index

pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --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


7.执行杀操作Creating sort index

pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --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


-概述

生产环境数据库出现运行时间过长的SQL,会影响数据库性能,如果同时出现多个类似SQL,则会影响数据库的可用性,从而导致业务不可用或体验差的情况。DBA人工干预需要一定的时间,因此需要借助工具进行监控并自动kill超预期执行的SQL。PT-Kill能够实时监控MySQL数据库的运行情况,准确捕获慢查询、死锁等问题,帮助您及时发现并解决数据库性能问题。


-PT-Kill的使用场景

1. 慢查询优化

当您的数据库出现慢查询时,PT-Kill可以帮助您快速定位问题,找出导致慢查询的原因(如索引不当、查询语句复杂度高等),并给出针对性的优化建议。

2. 高并发处理

在高并发场景下,PT-Kill可以通过智能调整参数,有效提高数据库吞吐量,确保数据库在高负载情况下依然稳定运行。

3. 锁等待分析

PT-Kill可以分析MySQL数据库中的锁等待情况,帮助您发现并解决死锁、长时间锁等待等问题,保证数据库的顺畅运行。

4. 连接管理

通过PT-Kill,您可以轻松管理MySQL数据库的连接,如查看当前连接数、分析连接泄露等问题,确保数据库连接资源得到合理利用。


-PT-Kill的优势

1. 跨平台支持

PT-Kill支持多种操作系统,包括Linux、Windows、macOS等,让您可以在不同平台上轻松使用。

2. 易于安装和使用

PT-Kill提供了简单易懂的安装和使用说明,让您可以快速上手,轻松解决数据库性能问题。

3. 持续更新和完善

PT-Kill由Percona公司持续更新和完善,您可以放心使用,期待更多强大功能。


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回