/**

Percona PT-kill重构版(PHP)

UPDATE:

Modified by: hcymysql 2018/11/27

1、增加慢SQL邮件报警功能

2、增加慢SQL微信报警功能

环境准备:

shell> yum install -y php-process php php-mysql

*/

概述

原生Percona版 PT-kill(Perl)工具只是单纯的KILL掉正在运行中的慢SQL,而不能作为一个监控工具使用,例如缺少邮件报警或者微信报警功能,固需要将其重构。

重构版 PT-kill(PHP)从information_schema.PROCESSLIST表中捕获正在运行中的SELECT|ALTER等DML/DDL消耗资源过多的查询,过滤它们,然后杀死它们(可选择不杀)且发邮件/微信报警给DBA和相关开发知悉,避免因慢SQL执行时间过长对数据库造成一定程度的伤害。

(注:慢SQL执行完才记录到slow.log里,执行过程中不记录。)

Usage:

Options:

-u username

-p password

-h host ip

-P port

-B busytime time seconds 设置慢SQL执行时间触发报警

-I interval time seconds 设置守护进程下间隔监测时间

--kill 如果想杀掉慢查询,加上该选项。

--match-info 匹配杀掉SELECT|INSERT|UPDATE语句

--match-user 匹配杀掉的用户

--daemon 1开启后台守护进程,0关闭后台守护进程

--mail 开启发送邮件报警

--weixin 开启发送微信报警

--help Help

Example :

前台运行

shell> php pt-kill.php -u admin -p 123456 -h 10.10.159.31 -P 3306 -B 10 --match-info='select|alter' --match-user='dev' --kill --mail --weixin

后台运行

shell> nohup php pt-kill.php -u admin -p 123456 -h 10.10.159.31 -P 3306 -B 10 -I 15 --match-info='select|alter' --match-user='dev' --kill --mail --weixin --daemon 1 &

关闭后台运行

shell> php pt-kill.php --daemon 0

以上是工具的使用方法和参数选项。

这里说下比较重要的参数:

1、--kill 如果想杀掉慢查询,那么在后面添加该选项;

2、--match-info 可以单独使用,也可以和--match-user结合一起使用;

3、--daemon 1 是开启后台守护进程,如果不添加该选择,可以用系统的crontab代替。

该选项要和-I 10(秒)配合一起使用,即每休眠10秒监控一次。0为关闭后台守护进程。

4、--mail 为开启发送邮件报警,需先设置smtp_config.php,改成你自己的邮箱账号信息

smtp_config.php

******************** 配置信息 ********************************

$smtpserver = "smtp.126.com";//SMTP服务器

$smtpserverport = 25;//SMTP服务器端口

$smtpusermail = "chunyang_he@126.com";//SMTP服务器的用户邮箱

$smtpemailto = 'chunyang_he@126.com';//发送给谁

$smtpuser = "chunyang_he@126.com";//SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名

$smtppass = "123456";//SMTP服务器的授权码

$mailtitle = "警告!出现卡顿慢SQL,请及时优化处理!";//邮件主题

$mailcontent = "

".$content."

";//邮件内容

$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件

************************ 配置信息 ****************************

5、--weixin 为开启发送微信报警,需要先安装下simplejson-3.8.2.tar.gz

shell> tar zxvf simplejson-3.8.2.tar.gz

shell> cd simplejson-3.8.2

shell> python setup.py build

shell> python setup.py install

然后编辑pt-kill.php脚本

找到

$status1 = system("/usr/bin/python wechat.py 'hcymysql' {$row['DB']}库出现卡顿慢SQL! '{$content1}'");

将其'hcymysql'我的微信号换成你自己的即可。

微信企业号设置

6、会在工具目录下生成kill.txt文件保存慢SQL。

shell> cat kill.txt

2018-11-27 16:41:22

用户名:root

来源IP:localhost

数据库名:hcy

执行时间:18

SQL语句:select sleep(60)

7、默认只杀连接中的慢SQL,保留会话连接,如果想把连接也杀掉,去掉QUERY

修改pt-kill.php

//$kill_sql = "KILL QUERY {$row['ID']}";

$kill_sql = "KILL {$row['ID']}";

具体演示请看“pt_kill演示录像.avi”

mysql pt_GitHub - hcymysql/pt-kill: Percona PT-kill重构版(PHP)相关推荐

  1. mysql kill 无效_mysql kill不生效?

    生产环境出现过多次mysql hang住,写操作的sql堵住的情况,这个时候使用kill来kill所有的连接,但是大部分时候连接kill 后处于freeing item状态,kill在这种场景下基本无 ...

  2. mysql kill 指令_MySQL kill指令使用指南

    KILL [CONNECTION | QUERY] processlist_id 在Mysql中每个连接都是单独线程运行,可以使用语句 KILL processlist_id statement.来终 ...

  3. Mysql搭建PXC集群 - Percona XtraDB Cluster

    转载来源:https://blog.csdn.net/lvshaorong/article/details/80501905  pxc集群是Percona XtraDB Cluster的缩写,是基于p ...

  4. kill -9 和 kill -15 的区别

    kill -9 [pid] kill -15 [pid] 建议做法: 先使用kill -15,然后再使用kill -9 

  5. 指针pt的值(pt,pt,*pt)

    代码: #pragma warning(disable:4996)#include <stdio.h> #include <stdlib.h> #include <mat ...

  6. kill -15 与kill -9的区别

    kill -15和 kill -9 是常用的命令,都可以用来杀死进程. 那 kill -15 与 kill -9 有什么区别呢? kill - -后面跟的是信号 比如9.15 进程之间的通信就是让俩个 ...

  7. linux 信号9和信号15,kill -9 和 kill -15 的区别

    相信很多程序员对于Linux系统都不陌生,即使自己的日常开发机器不是Linux,那么线上服务器也大部分都是的,所以,掌握常用的Linux命令也是程序员必备的技能. 但是,怕就怕很多人对于部分命令只是一 ...

  8. mysql 升级percona_MySQL Study之--Percona Server 5.5升级5.6

    系统环境: 操作系统:CentOS_6.5(64) MySQL:  Percona server 5.5(5.6) 一.升级的目的 为什么MySQL升级是必须的? 原因有很多,比如:为了使用新增的特性 ...

  9. 信号(三)Kill函数和Kill命令

    一.Kill命令 1.Kill命令: kill -信号编号/信号名 pid 2.Kill命令其实是用来发送信号的,我们常用的Kill -9 pid只是给某个进程发送9号信号而已,而不是说杀死该进程. ...

最新文章

  1. maven实现依赖的“全局排除”
  2. 【剑指offer】10A--求裴波那切数列的第n项,C++实现
  3. android 动画 返回,Android TranslateAnimation在动画后重置
  4. Django--ORM操作
  5. Java软件研发工程师转行之深度学习(Deep Learning)进阶:手写数字识别+人脸识别+图像中物体分类+视频分类+图像与文字特征+猫狗分类
  6. 第一章:AJAX与jQuery
  7. win10控制视频声音大小
  8. LeetCode MySQL 178. 分数排名(dense_rank连续排名)
  9. 【clickhouse】基于ClickHouse的海量数据交互式OLAP分析场景实践
  10. for 2018.12.3
  11. 关于Bom下标准模式和混杂模式!
  12. crontab命令 :Linux下定时执行脚本
  13. 恢复svn服务器误删的文件,SVN删除文件及其恢复问题详解
  14. IPSec ×××实验
  15. 【leetcode】557 反转字符串中的单词III(字符串)
  16. 判断当前手机设备的类型(安卓还是IOS)
  17. 官网下载Eclipse历史版本
  18. 使用Aspose.Words设置word文档多倍行距
  19. ESP32 LVGL8.1 ——Style multiple styles 多种风格样式 (Style 12)
  20. 需要类型转换时请为模板定义非成员函数——条款46

热门文章

  1. 静态类和非静态类中静态变量
  2. Vijos1404遭遇战[最短路建模]
  3. 又见灵异事件,li中的span右浮动遇到的问题
  4. Pwnium CTF2014 – MatterOfCombination writeup
  5. 点云的无序性_PU-Net:解决3D点云数据的上采样问题
  6. 南航计算机硬件实验,南航80X86微机原理及接口技术实验指导书.pdf
  7. bfgs算法matlab程序,BFGS优化算法及应用实例.docx
  8. log4j写入mysql数据库_log4j日志写入数据库
  9. c语言黑白棋运行结果,黑白棋c语言代码
  10. 如何测量PN中的耗散层两边的电位差?