全站资源开放下载,感谢广大网友的支持
链接失效请移步职业司平台
非盈利平台

非盈利平台

只为分享一些优质内容

Java帮帮-微信公众号

Java帮帮-微信公众号

将分享做到极致

微信小程序

微信小程序

更方便的阅读

职业司微信公众号

职业司微信公众号

实时动态通知

安卓APP

安卓APP

我们从此不分开

程序员生活志-公众号

程序员生活志-公众号

程序员生活学习圈,互联网八卦黑料

支付宝赞助-Java帮帮社区
微信赞助-Java帮帮社区

Lepus搭建企业级数据库慢查询分析平台

11
发表时间:2018-11-08 15:14来源:Java帮帮-微信公众号


前言

Lepus的慢查询分析平台是独立于监控系统的模块,该功能需要使用percona-toolkit工具来采集和记录慢查询日志,并且需要部署一个我们提供的shell脚本来进行数据采集。该脚本会自动开启您数据库的慢查询日志,并对慢查询日志进行按小时的切割,并收集慢查询日志的数据到监控机数据库。随后您通过Lepus系统就可以分析慢查询了。

安装

安装 percona-toolkit

yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-IO-Socket-SSL perl-DBI perl-DBD-MySQL

下载地址:https://www.percona.com/downloads/percona-toolkit/LATEST/

## 你也可以选择其他版本wget https://www.percona.com/downloads/percona-toolkit/2.2.6/RPM/percona-toolkit-2.2.6-1.noarch.rpm

安装:

rpm-ivhpercona-toolkit-2.2.6-1.noarch.rpm

开启慢查询分析

在 MySQL 服务器管理里面电击右侧的编辑按钮,进入服务器编辑界面,开启慢查询日志。

慢查询脚本

#!/bin/bash

#****************************************************************#

# ScriptName:/usr/local/sbin/lepus_slowquery.sh

# Create Date:2018-11-05

#***************************************************************#

# configlepus database server 监控端

lepus_db_host="192.168.1.180"

lepus_db_port=9002

lepus_db_user="lepus_user"

lepus_db_password="password"

lepus_db_database="lepus"

# configmysql server 被监控端

# 通过 which mysql 命令查询位置

mysql_client="/usr/local/mysql/bin/mysql"

mysql_host="192.168.1.190"

mysql_port=3306mysql_user="root"

mysql_password="root"

# configslowqury

# 慢查询日志存放地址slowquery_dir="/data/mysql/"

# 慢日志时间1s,可以自行定义slowquery_long_time=1

# 获取被监控端慢日志存放位置

slowquery_file=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "show variables like 'slow_query_log_file';" | grep log | awk '{print $2}'`

# 通过 which pt-query-digest 命令查询位置

pt_query_digest=`/usr/bin/pt-query-digest`

# config server_id,从监控列表查找ID,必须一致,否则无法展示数据

lepus_server_id=1

# collect mysqlslowquery log into lepus database;

# 收集慢日志存储到天兔监控数据库

$pt_query_digest --user=$lepus_db_user --password=$lepus_db_password --port=$lepus_db_port --charset=utf8 --review h=$lepus_db_host,D=$lepus_db_database,t=mysql_slow_query_review --history h=$lepus_db_host,D=$lepus_db_database,t=mysql_slow_query_review_history --no-report --limit=100% --filter="\$event->{add_column} = length(\$event->{arg}) and\$event->{serverid}=$lepus_server_id " $slowquery_file 2> /dev/null

# set a new slowquery log;tmp_log=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "select concat('$slowquery_dir','slow_',date_format(now(),'%Y%m%d%H'),'.log');" | grep log | sed -n -e '2p'`

# config mysqlslowquery;$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p

$mysql_password -e "set global slow_query_log=1;set global long_query_time=$slowquery_long_time;" 2> /dev/null

$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global slow_query_log_file = '$tmp_log';" 2> /dev/null

# delete log before 7days;cd $slowquery_dir/usr/bin/find ./ -name 'slow_*' -mtime +7 | xargs rm -rf

配置完成后保存,并加入计划任务。因为慢查询做了按小时的切割,建议计划任务时间间隔在1小时之内。

将以上脚本加入定时任务:

crontab -e

写入脚本:

*/5 * * * * sh /usr/local/sbin/lepus_slowquery.sh > /dev/null 2>&1

这里,我们也可以手动执行看一下效果,登录监控端服务,查看慢查询相关参数:

mysql> show variables like 'slow_query%';

+---------------------------+--------------------------------------+

| Variable_name             | Value                                |

+---------------------------+--------------------------------------+

| slow_query_log            | OFF                                  |

| slow_query_log_file       | /data/mysql/slowquery_2018110609.log |

+---------------------------+--------------------------------------+

mysql> show variables like 'long_query_time';

+-----------------+-----------+

| Variable_name   | Value     |

+-----------------+-----------+

| long_query_time | 0.500000 |

+-----------------+-----------+

参数说明

  • slow_query_log 慢查询开启状态

  • slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)

  • long_query_time 查询超过多少秒才记录

展示

配置完成后,稍等片刻,即可在慢查询分析平台查看该库的慢查询日志。

小结

被监控监控机通过 percona-toolkit 工具和 shell 脚本来采集慢查询日志并发送到监控机,Lepus的慢查询分析平台对采集数据进行展示和分析。


Java帮帮学习群生态

Java帮帮学习群生态

总有一款能帮到你

Java学习群

Java学习群

与大牛一起交流

大数据学习群

大数据学习群

在数据中成长

九点编程学习群

九点编程学习群

深夜九点学编程

python学习群

python学习群

人工智能,爬虫

测试学习群

测试学习群

感受测试的魅力

Java帮帮生态承诺

Java帮帮生态承诺

一直坚守,不负重望

初心
勤俭
诚信
正义
分享
友链交换:加帮主QQ2524138991 留言即可 24小时内答复  
业司
满吉教育资讯
会员登录
获取验证码
登录
登录
我的资料
留言
回到顶部