主要用途:pt-kill是用来kill MySQL连接的一个工具,在MySQL中因为空闲连接较多导致超过最大连接数,或某个有问题的sql导致mysql负载很高时,需要将其KILL掉来保证服务器正常运行。
 
从show processlist 中获取满足条件的连接或者从包含show processlist的文件中读取满足条件的连接并打印或者杀掉或者执行其他操作。
这个工具在工作中实用性很高,当服务器连接出现异常后第一想到的就是pt-kill,我们这里主要用来防止某些select操作时间过长,从而影响其他线上SQL。
 
范例:
pt-kill --log-dsn D=test1,t=pk_log --create-log-table --host=host2 --user=root --password=123--port=3306 --busy-time=10 --print --kill-query --match-info "SELECT|select" --victims all
 
该使用范例的作用:
如果不存在test1.pk_log表,则创建该表,然后将所有pt-kill的操作记录到该表中。对所有查询时间超过10秒的SELECT语句进行print显示出来,同时会kill该query。
pt-kill 默认检查间隔为5秒。
 
参数:
--log-dsn D=testdb,t=kill_log --create-log-table 是创建testdb.kill_log表,之后将pt-kill操作的日志记录在表中。
--busy-time=10 执行时间超过10秒的。
--print --kill-query 动作是进行print和kill query,除此之外的动作还有kill连接:--kill
--match-info 'SELECT|select' 只匹配SELECT 语句。
 
重要参数:
--daemonize  放在后台以守护进程的形式运行;
--interval  多久运行一次,单位可以是s,m,h,d等,默认是s。默认30s,有点长,可以根据实际情况来调节
--victims 默认是oldest,只杀最古老的查询。这是防止被查杀是不是真的长时间运行的查询,他们只是长期等待。这种匹配按时间查询,杀死一个时间最高值。
    all 杀掉所有满足的线程
     all-but-oldest 杀死所有,但最长的保留不杀。
--kill 杀掉连接并且退出
--kill-query 只杀掉连接执行的语句,但是线程不会被终止
--print 打印出来kill掉的连接
--busy-time 批次查询已运行的时间超过这个时间的线程;
--idle-time 杀掉sleep 了多少时间的连接线程,必须在--match-command sleep时才有效
–busy-time 批次查询已运行的时间超过这个时间的线程;
–idle-time 杀掉sleep了多少时间的连接线程,必须在--match-command sleep时才有效
–match-command 匹配当前连接的命令
 
常用用法:
pt-kill --defaults-file xx --match-command Sleep --kill --victims all --interval 10 每隔10s 杀掉处于sleep状态的连接数;
pt-kill --defaults-file xx --busy-time 60 --kill --victims all --interval 10 每隔10s 杀掉处初步runnning状态超过60s的连接数;
pt-kill –match-command Sleep –idle-time 5 –host –port –interval –print –kill –victims all 杀掉空闲链接
pt-kill –match-command Query –busy-time 5 –host –port –interval –print –kill –victims all 杀掉运行时间超过5s的链接
pt-kill –match-command Query –busy-time 5 –host –port –interval –print –kill –victims all –match-info 杀掉匹配某个规则的正在运行的sql
pt-kill –match-command Query –match-state “Sorting result” busy-time 5 –host –port –interval –print –kill –victims all 杀掉正在进行filesort的sql
pt-kill –match-command Query –match-state “Copying to tmp table” busy-time 5 –host –port –interval –print –kill –victims all 杀掉正在Copying to tmp table的sql
 
使用--config写配置文件的方式简化命令:
pt-kill --config tmp.txt --log-dsn D=testdb,t=kill_log --create-log-table --match-info "SELECT|select" --victims all
 
cat tmp.txt
host=host2
user=root
password=123
port=3306
busy-time=10
print
kill-query
 
--match-info 是区分大小写的,匹配SELECT也就意味着对select无法匹配,因此使用"SELECT|select"包含大小写.

每天一个percona 工具 --- pt-kill的更多相关文章

  1. Angular+Flask搭建一个记录工具

    平时用的最多的文本编辑器就是Notepad++,很多东西都是通过Notepad++直接记录的: 没有看完的网页链接 要整理.收藏的网页 读书笔记 要处理的事情 待看/看过的文档和电子书 等等... 随 ...

  2. 【开源一个小工具】一键将网页内容推送到Kindle

    最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zh ...

  3. 提高Scrum站会效率的一个小工具

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:提高Scrum站会效率的一个小工具.

  4. 封装一个Ajax工具函数

    /*封装一个ajax工具函数*/ window.$ = {}; /*通过$定义一个ajax函数*/ /* * 1. type   string   请求的方式  默认是get * 2. url     ...

  5. 分享一个数据库工具DTOOLS

    整理电脑的时候发现一个好的工具——DTOOLS,他是我在09年左右写的一个数据库工具. 可以干什么呢? 我罗列一下: 1.全面的展示数据库字段情况 2. 迅速切换,展示数据库记录情况,不输语句,即点即 ...

  6. 分享一个Snackbar工具类 SnackbarUtils;

    分享一个Snackbar工具类,源代码也是在Github上面找的,自己做了一下修改: 功能如下: 1:设置Snackbar显示时间长短                 1.1:Snackbar.LEN ...

  7. 推荐一个好工具:P/Invoke Interop Assistant【转】

    原文地址 :http://write.blog.csdn.net/postedit 在从托管代码里面调用非托管代码的时候,经常会翻阅MSDN找到需要调用的这个程序集里面的关于需要调用方法的签名,还要特 ...

  8. 【php增删改查实例】第四节 -自己 DIY 一个数据库管理工具

    本节介绍如何自己DIY一个数据库管理工具,可以在页面输入sql 进行简单的增删改查操作. 首先,找到xampp的安装目录,打开htdocs: 新建一个php文件,名称为 mysqladmin.php ...

  9. Maven是一个项目管理工具

    Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Depen ...

随机推荐

  1. js 自带的 map() 方法

    1. 方法概述 map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组. 2. 例子 2.1 在字符串中使用map 在一个 String  上使用 map 方法获取字符串中 ...

  2. 双层路由设置,WAN口和LAN口连接的方法设置

    WAN口设置方法,社路由器分别为路1 和路2 1 路2的LAN口地址改为172.16.1.1,重启 2 笔记本改成172.16.1.X,然后进入设置,在里面WAN地址设置为静态地址 192.168.1 ...

  3. java split进行字符串分割

    在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1.如果用"."作为分隔的话,必须是如下写法,Str ...

  4. js 、jsdoc生成33

    ============== js 点击事件后没方法名,调用有方法名 document.getElementById('lind').onclick=abc;//传统的id选择器 中没有# 哦 fun ...

  5. [转载]LazyWriter(惰性写入器) 进程的作用

      Q:What Does the LazyWriter Process Do? The LazyWriter process is a periodic process that checks th ...

  6. ViewPager +Fragment 滑动游标

    一.我的博客https://github.com/anan03/ananwork/tree/master/anan1.加入compile 'com.gxz.pagerslidingtabstrip:l ...

  7. angular的双向数据绑定

    方向1:模型数据(model) 绑定 到视图(view) 实现方法1:{{model变量名}} $scope.num=10 <p>{{num}}</p> 实现方法2: 常用指令 ...

  8. 5.对与表与表之间的关系,efcore是如何处理的

    public class Account { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Accoun ...

  9. HTML相关问题

    1.XHTML和HTML有什么区别HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言最主要的不同:XHTML 元素必须被正确地嵌套.XHTML 元素必须被关闭.标签名必须用小 ...

  10. hihoCoder 1430 : A Boring Problem(一琐繁题)

    hihoCoder #1430 : A Boring Problem(一琐繁题) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 As a ...