凡普金融mysql_dba+工具:PT-kill重构版,慢SQL报警及扼杀利器(可下载)

本文主要是介绍凡普金融mysql_dba+工具:PT-kill重构版,慢SQL报警及扼杀利器(可下载),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/**

* Percona PT-kill重构版(PHP)

* https://github.com/hcymysql/pt-kill

*

* 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> 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,改成你自己的邮箱账号信息

4969ebeb80b578e3fddb09947f3b724f.png

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

cb5d597689819cdd59985e4bfa3ae800.png

然后编辑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”。

下载方式

登录云盘链接:

即可下载工具脚本

现通过dbaplus社群免费为大家提供Percona PT-kill重构版(PHP)的下载使用。若使用过程中有任何问题或建议,可随时与我们联系,欢迎大家试用!

更多免费工具&脚本

81012ee4e74c4a41e72c6f5bb4694700.png

这篇关于凡普金融mysql_dba+工具:PT-kill重构版,慢SQL报警及扼杀利器(可下载)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/410810

相关文章

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

MySQL中COALESCE函数示例详解

《MySQL中COALESCE函数示例详解》COALESCE是一个功能强大且常用的SQL函数,主要用来处理NULL值和实现灵活的值选择策略,能够使查询逻辑更清晰、简洁,:本文主要介绍MySQL中C... 目录语法示例1. 替换 NULL 值2. 用于字段默认值3. 多列优先级4. 结合聚合函数注意事项总结C

通过ibd文件恢复MySql数据的操作方法

《通过ibd文件恢复MySql数据的操作方法》文章介绍通过.ibd文件恢复MySQL数据的过程,包括知道表结构和不知道表结构两种情况,对于知道表结构的情况,可以直接将.ibd文件复制到新的数据库目录并... 目录第一种情况:知道表结构第二种情况:不知道表结构总结今天干了一件大事,安装1Panel导致原来服务

mysql关联查询速度慢的问题及解决

《mysql关联查询速度慢的问题及解决》:本文主要介绍mysql关联查询速度慢的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql关联查询速度慢1. 记录原因1.1 在一次线上的服务中1.2 最终发现2. 解决方案3. 具体操作总结mysql

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

MySql中的数据库连接池详解

《MySql中的数据库连接池详解》:本文主要介绍MySql中的数据库连接池方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql数据库连接池1、概念2、为什么会出现数据库连接池3、原理4、数据库连接池的提供商5、DataSource数据源6、DBCP7、C

MySQL的隐式锁(Implicit Lock)原理实现

《MySQL的隐式锁(ImplicitLock)原理实现》MySQL的InnoDB存储引擎中隐式锁是一种自动管理的锁,用于保证事务在行级别操作时的数据一致性和安全性,本文主要介绍了MySQL的隐式锁... 目录1. 背景:什么是隐式锁?2. 隐式锁的工作原理3. 隐式锁的类型4. 隐式锁的实现与源代码分析4