MySQL慢查询可视化(1):pt-query-digest + Anemometer

本文介绍了如何使用Anemometer和Percona Toolkit的pt-query-digest对MySQL的慢查询日志进行可视化分析。详细步骤包括Anemometer的下载与安装、配置Apache和PHP环境、设置MySQL权限、修改配置文件,以及利用pt-query-digest将慢查询日志导入数据库。最后解决了timezone和mysql.sock套接字问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 下载 Anemometer

2. 下载 Percona Toolkit 
# yum install percona-toolkit-2.2.18-1.noarch.rpm

3. 安装httpd 和 php,需要 Apache webserver with PHP 5.3+ ,依赖包:bcmath,mysqli,
# yum install  httpd php *bcmath* *mysqli*  -y

4. 将Anemometer文件包解压,重命名为anemometer,并移动到/var/www/html 下(apache默认路径)
# unzip Anemometer-master.zip
# mv Anemometer-master /var/www/html/Anemometer

5. Anemometer 配置:存储分析数据
# /usr/local/mysql/bin/mysql -h localhost -uroot -p123456</var/www/html/Anemometer/install.sql

6. 创建用户
# mysql -h localhost -uroot -p123456 -e "grant ALL ON slow_query_log.* to 'anemometer'@'%' IDENTIFIED BY 'anemometer';"
# mysql -h localhost -uroot -p123456 -e "grant select on *.* to  'anemometer'@'%' identified by 'anemometer';"

注意:赋予【on *.* 】的权限是因为做执行计划时,每个表可能在不同的库,需要use database;

7. 修改可以视化界面 Anemometer 的配置信息
# cd /var/www/html/Anemometer/conf
# mv sample.config.inc.php config.inc.php
# vi config.inc.php





8. 修改apache的配置文件
# cat /etc/httpd/conf/httpd.conf |grep "ServerName"
# ServerName gives the name and port that the server uses to identify itself.
ServerName 192.168.56.10:80   # 修改为对应的IP地址

重启 httpd 服务
# /etc/init.d/httpd start

9. 浏览器访问

10. 查看日志,排错。
# tail -f /etc/httpd/logs/error_log

11. 错误处理:
Q1:timezone问题

A1:
修改下/etc/php.ini 配置文件
date.timezone = Asia/Chongqing
重启 httpd 服务。

Q2: mysql.sock 套接字问题

A2:
# mkdir -p /var/lib/mysql/
# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

重新浏览器访问:OK


12.将慢查询日志通过pt-query-digest分析后存入数据库
# pt-query-digest --version
pt-query-digest 2.2.18

<a>. 针对 pt-query-digest 版本 <2.2
# pt-query-digest --user=anemometer --password=anemometer --socket=/tmp/mysql.sock \
                  --review h=localhost,D=slow_query_log,t=global_query_review \
                  --review-history h=localhost,D=slow_query_log,t=global_query_review_history \
                  --no-report --limit=0% \ 
                  --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" \ 
                  /data/mysql/mysql3308/data/slow.log

<b>. 针对 pt-query-digest 版本 >=2.2
# pt-query-digest --user=anemometer --password=anemometer --socket=/tmp/mysql.sock \
                  --review h=localhost,D=slow_query_log,t=global_query_review \
                  --history h=localhost,D=slow_query_log,t=global_query_review_history \
                  --no-report --limit=0% \ 
                  --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" \ 
                  /data/mysql/mysql3308/data/slow.log


注意:如果你的mysql是通过sock方式连接的话,建议加上--socket指定sock文件,执行完以上的命令,
          数据库里就会多出global_query_review 表和global_query_review_history表了。                  

查询后可获得慢查询日志的结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值