Anemometer和pt-query-digest结合将MySQL慢查询可视化

pt-query-digest虽然功能强大, 但毕竟没有web界面显示的直观,我们可以借助Anemometer作为pt-query-digest执行结果的显示端,Anemometer是专门为mysql的慢查询开发的一款开源软件,地址在http://www.oschina.net/p/anemometer


一、安装LAMP环境
1,安装

 yum install  httpd php *bcmath* *mysqli*  -y

2,查看

[root@localhost ~]# rpm -qa|grep http
httpd-tools-2.4.6-40.el7.centos.x86_64
httpd-2.4.6-40.el7.centos.x86_64
[root@localhost ~]# rpm -qa|grep php
php-bcmath-5.4.16-36.el7_1.x86_64
php-cli-5.4.16-36.el7_1.x86_64
php-mysql-5.4.16-36.el7_1.x86_64
php-pear-MDB2-Driver-mysqli-1.5.0-0.8.b4.el7.noarch
php-common-5.4.16-36.el7_1.x86_64
php-pdo-5.4.16-36.el7_1.x86_64
php-process-5.4.16-36.el7_1.x86_64
php-pear-MDB2-2.5.0-0.9.b5.el7.noarch
php-5.4.16-36.el7_1.x86_64
php-xml-5.4.16-36.el7_1.x86_64
php-pear-1.9.4-21.el7.noarch
[root@localhost ~]# rpm -qa|grep bcmath
php-bcmath-5.4.16-36.el7_1.x86_64

4,修改httpd中的ServerName

vi /etc/httpd/conf/httpd.conf 
Anemometer和pt-query-digest结合将MySQL慢查询可视化_第1张图片


二、Anemometer配置
1,执行SQL脚本

mysql -uroot -p123456 < /var/www/html/anemometer/install.sql


2,添加使用anemometer的权限

grant all on slow_query_log.* to 'anemometer'@'%' identified by '123456';
grant select on *.* to  'anemometer'@'%' identified by '123456';
给与'on *.* t'的权限是因为做执行计划时,每个表可能在不同的库,需要use database;

3,设置配置文件,修改 ip,host,port,db,user,password
cd /var/www/html/anemometer/conf
cp sample.config.inc.php config.inc.php
vi config.inc.php

Anemometer和pt-query-digest结合将MySQL慢查询可视化_第2张图片


Anemometer和pt-query-digest结合将MySQL慢查询可视化_第3张图片


Anemometer和pt-query-digest结合将MySQL慢查询可视化_第4张图片

4,启动

servier httpd start

5,访问
http://192.168.44.130/anemometer

三、遇到的问题
1,如果界面空白,查看日志

vi /var/log/httpd/error_log

如果显示如下错误,请关闭selinux: setenforce 0(最好在配置文件中设置,以免重启后问题重现)Anemometer和pt-query-digest结合将MySQL慢查询可视化_第5张图片


2, 界面显示没有global_query_review表

Anemometer和pt-query-digest结合将MySQL慢查询可视化_第6张图片

因为我们在配置文件定义的slow_query_log库中没有这个表,画面的任何数据都是从表里取得的,而格式也是和pt-query-digest执行的结果相同,所以想要看到数据,需要先执行pt-query-digest并将结果导入到表的命令。

pt-query-digest --user=root --password=123456 --review h=127.0.0.1,D=slow_query_log,t=global_query_review --history h=127.0.0.1,D=slow_query_log,t=global_query_review_history  --create-review-table /usr/local/mysql/log/slow.log

或者

pt-query-digest --user=anemometer --password=test \
                  --review h=db.example.com,D=slow_query_log,t=global_query_review \
                  --review-history h=db.example.com,D=slow_query_log,t=global_query_review_history \
                  --no-report --limit=0% \ 
                  --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" \ 
                  /root/test/localhost-slow.log

导入数据的命令一般配置定时任务,每隔多久将慢日志导入到数据库中,这个可以根据自己的需求去定制了

这样就会存在global_query_review和global_query_review_history两个表了。
执行后,刷新页面
Anemometer和pt-query-digest结合将MySQL慢查询可视化_第7张图片

3,查看SQL具体信息

Anemometer和pt-query-digest结合将MySQL慢查询可视化_第8张图片

跳转画面后,点击Explain  Plan,可能出现 “Error in Query Explain Plugin: Missing field host”  的错误,需要修改配置文件
这个应该是动态的,但是目前是只是一个测试库,所以直接写定db名

Anemometer和pt-query-digest结合将MySQL慢查询可视化_第9张图片

修改完成,重启httpd

Anemometer和pt-query-digest结合将MySQL慢查询可视化_第10张图片


部署参考:http://www.tuicool.com/articles/Vny2Y3Y


-------------------------------------
顺便推荐QQ群,仅供学习和交流,欢迎大家的加入
Java     : 139978466
MySQL: 167209377
大数据  : 181560406
前端     : 139978026
测试     : 299057857
运维     : 139978281

你可能感兴趣的:(MySQL,MySQL技术)