dba+工具:PT-kill重构版,慢SQL报警及扼杀利器

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

/**

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

43437f696bfca3a1188631e9cf332411fcc896a3

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

ff949374b4235c56c2f502481f518b58d57648f1

然后编辑pt-kill.php脚本,找到

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

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

 ●  微信企业号设置

移步 www.cnblogs.com/linuxprobe/p/5717776.html

可看此教程配置。

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']}";


原文发布时间为:2018-11-29
本文作者:贺春旸
本文来自云栖社区合作伙伴“ DBAplus社群”,了解相关信息可以关注“ DBAplus社群”。
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
20天前
|
SQL 运维 数据管理
sql管理工具archery简介
Archery是一个多公司采用的SQL管理工具,提供权限管理、工作流配置、实例管理、SQL审核、查询、优化及通知功能。它支持多级审批和不同云环境的数据管理。尝试Archery的SaaS版本可访问[ArcheryDMS.com](https://archerydms.com/home/)。此外,NineData是一个综合平台,包含SQL开发、数据复制等功能,适应混合云和多云环境,由叶正盛创建,详情见[Ninedata.cloud](https://www.ninedata.cloud/aboutus)。
36 0
|
2月前
|
SQL 关系型数据库 MySQL
Navicat、HeidiSQL和SQL Workbench:数据库管理工具的三足鼎立
随着数据管理需求的日益增长,数据库管理工具的选择成为了企业和开发者需要深思熟虑的重要问题。在这个竞争激烈的市场中,Navicat、HeidiSQL和SQL Workbench三款备受关注的数据库管理工具各具特色,形成了一种三足鼎立的局面。
52 0
|
2月前
|
SQL JSON 数据库
在线JSON转SQL工具
JSON文件中的数据或者JSON对象转换为SQL插入语句,方便用户将数据导入到数据库中。
217 2
|
2月前
|
SQL 算法 Oracle
在线sql格式化工具
让SQL代码整洁如新,在线SQL格式化工具助力高效编程
85 1
|
8月前
|
SQL 前端开发
前端项目实战伍拾贰​react-admin+material ui-踩坑-能用工具创建表别用sql
前端项目实战伍拾贰​react-admin+material ui-踩坑-能用工具创建表别用sql
41 0
|
9月前
|
SQL 存储 Oracle
数据库、数据库管理系统、SQL和图形界面工具的关系
数据库、数据库管理系统、SQL和图形界面工具的关系
117 0
QGS
|
SQL Oracle Java
(linux-x86-ARM)麒麟V10安装DBeaver21.3通用的数据库管理工具和 SQL 客户端
记(linux-x86-ARM)麒麟V10安装DBeaver21.3通用的数据库管理工具和 SQL 客户端
QGS
410 1
(linux-x86-ARM)麒麟V10安装DBeaver21.3通用的数据库管理工具和 SQL 客户端
【Sql Server】with as 递归查询的简单使用 以及在视图工具下的使用 注意小事项一
with as 递归查询的简单使用 以及在视图工具下的使用 注意小事项一
196 0
【Sql Server】with as 递归查询的简单使用 以及在视图工具下的使用 注意小事项一
|
SQL 数据库 Python
Python 数据库Insert语句脚本生成工具(SQL Server)
Python 数据库Insert语句脚本生成工具(SQL Server)
315 0
Python 数据库Insert语句脚本生成工具(SQL Server)
|
SQL
【工具】sql注入的基本原理与sqlmap的简单使用
本文将介绍超重量级工具SQLMAP的使用,我们将从OSCP经典教材出发,以视频的方式为您讲解其原理,此外我们将常用命令加以整理,为您奉上。
101 0