本文主要描述基于pt-query-digest工具对慢查询日志进行监控的工具Query-digest-UI。(安装、使用、介绍以及benren提供的改进版。)
本文中描述的内容与其他网站上对Query-digest-UI的安装和使用稍有不同,因为本人对此工具稍做了调整。
欢迎转载,请注明作者、出处。
作者:张正
blog:http://space.itpub.net/26355921
QQ:176036317
如有疑问,欢迎联系。
1.MySQL开启慢查询
2.安装Percona Toolkit
rpm -qa|grep percona
percona-toolkit-2.2.7-1
下载(百度云盘):http://pan.baidu.com/s/1eQgQAhc
3.下载Query-Digest-UI
官网:https://github.com/kormoc/Query-Digest-UI
下载(百度云盘):http://pan.baidu.com/s/1gd1Nn1L
4.准备好php相关模块(或者yum)
Apache, mod_php, php_pdo
5.启动apache服务
rpm -qa|grep http
httpd-2.2.3-45.el5
安装:
1.安装Percona Toolkit:
rpm -ivh percona-toolkit-2.2.7-1.noarch.rpm
NOTES:
需要先安装:perl-DBD-MySQL-3.0007-2.el5
但是安装此模块时,可能会报错:
libmysqlclient.so.15()(64bit) is needed by perl-DBD-MySQL-3.0007-2.el5.x86_64
libmysqlclient.so.15(libmysqlclient_15)(64bit) is needed by perl-DBD-MySQL-3.0007-2.el5.x86_64
需要安装 或 提供libmysqlclient.so.15
可在/usr/lib或者/usr/lib64下,对libmysqlclient.so.16或libmysqlclient.so.18 建立软连接:libmysqlclient.so.15
ln -s /usr/lib64/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.15
2.将Query-Digest-UI-master.zip文件包解压,重命名为slow,并移动到/var/www/html 下(apache默认路径)
pwd
/var/www/html/slow
3.安装php相关模块:
4.执行setup 脚本,并创建用户:
此处的install.sql脚本为Anemometer工具的脚本,该脚本创建的global_query_review和global_query_review_history表
比pt-query-digest工具创建的表多一些字段,能提供更详细的信息。
[root@/var/www/html/slow]mysql -uroot -pxxx < install.sql
[root@/var/www/html/slow]mysql -uroot -pxxx
mysql > grant all on slow_query_log.* to 'slow'@'%' identified by 'test';
mysql > grant select on *.* to 'slow'@'%';
mysql > grant all on slow_query_log.* to 'slow'@'localhost';
mysql > grant select on *.* to 'slow'@'localhost';
5.将慢查询日志通过pt-query-digest分析后存入db.example.com主机上的数据库中:
pt-query-digest --user=slow --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
pt 版本大于2.2版本的语句:
pt-query-digest --user=slow --password=test --review h=db.example.com,D=slow_query_log,t=global_query_review --history h=hd-119-186,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
NOTES:
1.此处的$HOSTNAME 的值为执行该命令主机的主机名。
2.如果是用一台服务器监控多台mysql数据库的慢查询,修改 --filter 中 $event->{hostname}=\"host2\""
3.或者将host2改为IP,即主机名显示为IP,取本机局域网IP:
将host2改为:
`ifconfig eth0|grep "inet addr"|awk '{print $2}'|awk -F':' '{print $2}'`
执行这个操作后,将会把慢日志分析后存入mysql的slow_query_log数据库。记得保证相应 '用户'@'主机' 的访问权限。
6.修改数据库连接信息:
pwd
/var/www/html/slow
cp config.php.example config.php
vi config.php
. . . . . .
$reviewhost = array(
// Replace hostname and database in this setting
// use host=hostname;port=portnum if not the default port
'dsn' => 'mysql:host=hostname;port=3306;dbname=slow_query_log',
'user' => 'slow',
'password' => 'test',
// See http://www.percona.com/doc/percona-toolkit/2.1/pt-query-digest.html#cmdoption-pt-query-digest--review
'review_table' => 'global_query_review',
// This table is optional. You don't need it, but you lose detailed stats
// Set to a blank string to disable
// See http://www.percona.com/doc/percona-toolkit/2.1/pt-query-digest.html#cmdoption-pt-query-digest--review-history
'history_table' => 'global_query_review_history',
);
注意正确填写红色字体部分变量的值。
7.通过网页访问:(注:目前发现该工具不支持360浏览器)
http://192.168.44.130/slow
效果图:
8.发现如果该工具监控多台MySQL服务器,慢查询日志又非常多的情况下,会发现非常不方便。
我对这个工具进行了修改,增加了hosts列,可通过选择框选择相应的值进行过滤:
下载(百度云盘 ):http://pan.baidu.com/s/1hqoUcpm
9.这个监控界面已经有了对主机名的过滤筛选,但是如果用于实际的生产环境中来监控,还是显得不够直观。
我对这个工具又进行了进一步的修改,界面如下:
下载(百度云盘 ):http://pan.baidu.com/share/link?shareid=3651139099&uk=2550236109
2.第二列为总执行次数
3.第三列为总的执行时间
4.第四列为平均执行时间
5.第五列为平均返回行数
6.第六列为平均扫描行数
7.增加了第七列,使用时间来进行过滤。
进入本监控页面,默认是显示所有慢查询SQL的前10条。然后可通过该选项列表中选择 最近3天、最近7天、10天以前、以及可以单独选择从从10天以前到现在的每一天中的SQL情况。
实际生产的监控环境,可通过Last executed和Monitored Hosts来过滤我们需要查看的慢查询SQL。
本文转自ITPUB博客84223932的博客,原文链接:Query-digest-UI监控慢查询,以及此工具的改进版,如需转载请自行联系原博主。