ITPub博客

首页 > 数据库 > 数据库开发技术 > MySQL基础运维——percona-toolkit运维工具

MySQL基础运维——percona-toolkit运维工具

数据库开发技术 作者:dapolan 时间:2022-03-08 14:31:14 0 删除 编辑

一、percona-toolkit工具

percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的 mysql 任务和系统任务,这些任务包括:

  • 检查 master 和 slave 数据的一致性

  • 有效地对记录进行归档

  • 查找重复的索引

  • 对服务器信息进行汇总

  • 分析来自日志和 tcpdump 的查询

  • 当系统出问题的时候收集重要的系统信息

percona-toolkit 源自 Maatkit 和 Aspersa 工具,这两个工具是管理 mysql 的最有名的工具,现在 Maatkit 工具已经不维护了,请大家还是使用 percona-toolkit 吧! 这些工具主要包括开发、性能、配置、监控、复制、系统、实用六大类,作为一个优秀的 DBA,里面有的工具非常有用,如果能掌握并加以灵活应用,将能极大的提高工作效率。

1、percona-toolkit软件包下载

 

2、  percona-toolkit软件安装

软件安装存在三种安装方式,分别为RPM包、二进制包、源码安装。

需安装依赖包

1
yum  install  perl-DBI perl-DBD-MySQL

1.RPM包安装方式

1
rpm –ivh percona-toolkit-3.1.0-2.el7.x86_64.rpm

2.二进制包安装

1
2
3
4
5
tar  –xvf percona-toolkit-3.0.11_x86_64. tar .gz
cd  percona-toolkit-3.0.11
perl Makefile.PL
make
make  install

下面介绍它自带的一些工具

2、pt-kill工具

1、工具介绍

pt-kill 是一个简单而且很实用的查杀mysql线程和查询的工具,主要是为了防止一些大/复杂/长时间查询占用数据库及系统资源,而对线上业务造成影响的情况。

2、常用参数

常用参数

含义

--user

用户

--password

密码

--port

端口

--host

主机

--socket

本地套接字

--match-command

匹配状态

--match-info

匹配信息

--match-state 

匹配声明

--ignore-host/--match-host

匹配主机

--ignore-db/--match-db

匹配数据库

--ignore-user/--match-user

匹配用户

--kill

杀掉连接并且退出

--kill-query

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

--print

打印满足条件的语句

--busy-time

SQL运行时间的线程

--idle-time

sleep时间的连接线程,必须在--match-command sleep时才有效

--interval

query的间隔

--victim   

oldest|all|all-but-oldest 针对范围

--daemonize

是否放到后台执行

--interval

执行频率(s=seconds, m=minutes, h=hours, d=days)

--log-dsn  D=test,t=pk_log 

记录信息到表中

3、实际案例

以下均省略连接参数!

3.1 杀运行时间超过10s的SQL语句但保留线程

1
pt- kill  --busy- time =10 --victims all --print -- kill -query

3.2 查某IP来源且运行时间超过20s的会话

1
pt- kill  --match-host  "10.100.50.29"  --print --victims all --busy- time =20s

3.3 每10秒检查一次,状态为sleep的进程就给干掉

1
pt- kill  --match- command  Sleep --victims all --interval 10 -- kill  --print

3.4 查杀select大于10s的会话

1
pt- kill  --match-info  "select|Select|SELECT"   --print  --victims all --busy- time  20s

3.5 查状态为sleep的进程且时间超过1h

1
pt- kill  --match- command  Sleep --victims all  --idle- time =1h --print

3.6 查杀访问某用户的会话

1
pt- kill  --match-user  "test"  --victims all  --print -- kill

3.7 将执行记录记录到表中

1
pt- kill  --log-dsn D= test ,t=pk_log --create-log-table --host=192.168.186.11 --user=root --password=mysql --port=3306 --busy- time =10 --print -- kill -query

注:

指定库必须存在否则会报错!

test库中pk_log表,若不存在先创建表--create-log-table

3.8 杀掉正在进行filesort的sql

1
pt- kill  --match- command  Query --match-state “Sorting result” --busy- time  10  --interval 10 --run- time  1  --print -- kill  --victims all

3.9 后台执行杀掉正在进行filesort的sql

1
pt- kill  --match- command  Query --match-state “Sorting result” --busy- time  10  --interval 10 --run- time  1  --print -- kill  --victims all --daemonize

注:

--daemonize 会将该命令放到后台不断执行。

3.10 筛选文件中processlist

1
2
mysql -e  "SHOW PROCESSLIST"  > proclist.txt
pt- kill  -- test -matching proclist.txt --busy- time  60 --print

3、pt-query-digest工具

1、工具介绍

分析查询执行日志,并产生一个查询报告,为 MySQL、 PostgreSQL、memcached 过滤、重放或者转换语句。

2、常用参数

常用参数

含义

--create-review-table

当使用--review参数把分析结果输出到表中时,如果没有表就自动创建

--create-history-table

当使用--history参数把分析结果输出到表中时,如果没有表就自动创建

--filter

对输入的慢查询按指定的字符串进行匹配过滤后再进行分析

--limit

限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出

--host

mysql服务器地址

--user

mysql用户名

--password

mysql用户密码

--history

将分析结果保存到表中,分析结果比较详细,下次再使用--history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化

--review

将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单。当下次使用--review时,如果存在相同的语句分析,就不会记录到数据表中

--output

分析结果输出类型,值可以是report(标准分析报告)、slowlog(Mysql slow log)、json、json-anon,一般使用report,以便于阅读

--since

从什么时间开始分析,值为字符串,可以是指定的某个”yyyy-mm-dd (hh:mm:ss)”格式的时间点,也可以是简单的一个时间值:s(秒)、h(小时)、m(分钟)、d(天),如12h就表示从12小时前开始统计。

--until

截止时间,配合—since可以分析一段时间内的慢查询


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70014851/viewspace-2867430/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-03-08

  • 博文量
    15
  • 访问量
    8468