Anemometer+Percona Toolki实现MySQL慢查询日志可视化功能

最近发现了一个挺好用的MySQL慢查询日志可视化的工具,网上也能找到很多资料,在这里结合自己的实际情况重新整理一下。

1. 实验环境

1.1 系统环境:

操作系统:CentOS 6.5 64位
主机地址:10.0.0.26
主机名:mysql01
mysql版本:mysql-5.6.36

1.2 可视化软件环境:

http环境:LAMP
可视化软件:Anemometer-master.zip,
 percona-toolkit-3.0.11-1.el6.x86_64.rpm,
 perl-TermReadKey-2.30-13.el6.x86_64.rpm

2. 编译安装MySQL服务

采用源码编译安装的方式来安装MySQL服务,并开启慢查询日志功能。

安装依赖:

yum -y install ncurses-devel libaio-devel cmake 

创建用户:

useradd -s /sbin/nologin -M mysql

下载MySQL源码包:

cd /usr/local/src
wget -q http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz

解压,编译安装

tar xf mysql-5.6.36.tar.gz
cd mysql-5.6.36
cmake . -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.6.36 -DMYSQL_DATADIR=/opt/mysql-5.6.36/data -DMYSQL_UNIX_ADDR=/opt/mysql-5.6.36/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_ZLIB=bundled -DWITH_SSL=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLE_DOWNLOADS=1 -DWITH_DEBUG=0
make && make install
ln -s /opt/mysql-5.6.36/ /opt/mysql

初始化数据库:

\cp support-files/my*.cnf /etc/my.cnf
/opt/mysql/scripts/mysql_install_db --basedir=/opt/mysql/ --datadir=/opt/mysql/data --user=mysql
mkdir /opt/mysql/tmp
chown -R mysql.mysql /opt/mysql/
cp /usr/local/src/mysql-5.6.36/support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
chkconfig mysqld on
chkconfig --list mysqld
/etc/init.d/mysqld start
netstat -lntup|grep 3306

修改默认用户密码:

mysqladmin -uroot password 123456;

配置MySQL环境变量:

echo ‘PATH=/opt/mysql/bin/:$PATH‘ >>/etc/profile
source /etc/profile

修改配置文件,开启慢查询日志:

[mysqld]
slow_query_log=1                #<==开启慢查询日志
long_query_time = 1         #<==设置慢查询日志的阈值,超出设定值的SQL被记录到日志文件,缺省10S
log_queries_not_using_indexes        #<==统计不走索引的语句
#min_examined_row_limit=1000        #<==返回行少于该值,不被记录到日志,最好不要设置,可能会有冲突
slow_query_log_file = /opt/mysql/data/slow.log

修改完后,重启mysql服务:

/etc/init.d/mysqld restart

3. 安装慢查询可视化工具

3.1 Percona工具介绍

Percona Toolkit是一组高级的命令行工具,用来管理mysql和系统任务,主要包括:

1:验证主节点和复制数据的一致性
2:有效的度记录行进行归档
3:找出重复的索引
4:总结MySQL服务器
5:从日志和tcpdump中分析查询
6:问题发生时收集重要的系统信息

3.2 安装PT工具(rpm方式)


安装依赖:

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes -y

下载rpm包:
PT工具需要两个rpm包,即:

perl-TermReadKey-2.30-13.el6.x86_64.rpm
percona-toolkit-3.0.11-1.el6.x86_64.rpm

下载地址分别为:
https://www.percona.com/downloads/percona-toolkit/3.0.11/binary/redhat/6/x86_64/percona-toolkit-3.0.11-1.el6.x86_64.rpm
http://mirror.centos.org/centos/6/os/x86_64/Packages/perl-TermReadKey-2.30-13.el6.x86_64.rpm
使用rpm命令安装

[[email protected] src]# rpm -ivh perl-TermReadKey-2.30-13.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:perl-TermReadKey       ########################################### [100%]
[[email protected] src]# rpm -ivh percona-toolkit-3.0.11-1.el6.x86_64.rpm
warning: percona-toolkit-3.0.11-1.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
Preparing...                ########################################### [100%]
   1:percona-toolkit        ########################################### [100%]

3.3 下载Anemometer-master.zip

官网:https://github.com/box/Anemometer

cd /usr/local/src &&wget https://github.com/box/Anemometer/archive/master.zip

4. 安装LAMP

在安装之前需要先确认epel-release,php_mysqli模块需要版本epel-release-6-8.noarch才会有。我们在之前安装PT工具的时候已经更新了epel源,因此可以直接yum安装。

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

检查安装结果:

[[email protected] ~]# rpm -qa *bcmath* *mysqli*
php-bcmath-5.3.3-49.el6.x86_64
php-pear-MDB2-Driver-mysqli-1.5.0-0.8.b4.el6.noarch     #<==如果没有这两个,必须先安装

5. 配置可视化界面

5.1 配置Anemoeter及数据库权限

移动Anemometer到http站点目录:

unzip master    #<==下载方式不同,包名也可能不同,因此需注意自己的包名
mv Anemometer-master /var/www/html/anemometer

运行sql脚本:
进入/var/www/html/anemometer,将mysql脚本导入到数据库中

mysql -uroot -p123456 < mysql56-install.sql

赋予数据库相应的权限:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| slow_query_log     |
+--------------------+
4 rows in set (0.15 sec)
mysql> grant all on slow_query_log.* to ‘anemometer‘@‘%‘ identified by ‘123456‘;
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on slow_query_log.* to ‘anemometer‘@‘localhost‘ identified by ‘123456‘;
Query OK, 0 rows affected (0.00 sec)

mysql> grant select on *.* to  ‘anemometer‘@‘%‘;
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on slow_query_log.* to ‘anemometer‘@‘localhost‘;
Query OK, 0 rows affected (0.00 sec)

mysql> grant select on *.* to  ‘anemometer‘@‘localhost‘;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

5.2 修改配置文件

anemometer配置:

vim /var/www/html/anemometer/conf/sample.config.inc.php



php配置:

vim /etc/php.ini,注意自己的socket文件所在位置



apache配置:

vim /etc/httpd/conf/httpd.conf

6. 服务启动

启动http服务
启动httpd服务,并访问网址:http://10.0.0.26/ anemometer

根据提示,修改配置文件名:

cp /var/www/html/anemometer/conf/sample.config.inc.php /var/www/html/anemometer/conf/config.inc.php`

修改完成配置文件,进入系统之后会有如下报错:

不要急,这是因为缺省了两个表,运行如下命令即可:

pt-query-digest --user=anemometer --password=123456  --socket=/opt/mysql/data/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\"" /opt/mysql/data/slow.log

到此,完成所有安装配置!结果展示如下:

参考文章:https://www.cnblogs.com/xuanzhi201111/p/4128894.html

原文地址:http://blog.51cto.com/13178102/2150513

时间: 2024-10-16 20:06:53

Anemometer+Percona Toolki实现MySQL慢查询日志可视化功能的相关文章

【转载】 使用Anemometer基于pt-query-digest将MySQL慢查询可视化

原文地址:使用Anemometer基于pt-query-digest将MySQL慢查询可视化 作者:84223932 本文主要介绍使用Anemometer基于pt-query-digest将MySQL慢查询可视化,因为网上资料相对较少,且都是英文的,遇到报错也没有相关的参考资料,因此写此文. 欢迎转载,请注明作者.出处. 作者:张正 blog:http://space.itpub.net/26355921 QQ:176036317 如有疑问,欢迎联系. 准备条件:1.MySQL开启慢查询 2.安

logstash推送mysql慢查询日志

本文将将介绍通过logstash用来收集mysql的慢查询日志,然后推送给elasticsearch,并创建自定义的索引,最终通过kibana进行web展示. 环境介绍: 操作系统版本:centos6.6 64bit Mysql版本: mysql5.6.17与mysql5.1.36 Logstash版本: logstash-2.0.0.tar.gz Elasticsearch版本:elasticsearch-2.1.0.tar.gz Kibana版本:Kibana 4.2.1 Java版本:1.

Mysql慢查询日志脚本

#!/bin/bash LOG=/diskb/mysql/slowlog/   #定义日志存储路径 DATE=`date +"%Y-%m-%d"`   #定义时间参数 user=root                                 #填写MySQL账户信息 passwd=123456 mysql -u$user -p$passwd -e "set global slow_query_log=0" #停止mysql慢查询日志 mysql -u$us

mysql慢查询日志分析工具mysqlsla

一.介绍    mysqlsla是一个分析mysql慢日志的工具,可以分析出慢查询的原因,包括执行某条sql出现的次数及在slow log数据的百分比.执行时间.等待销的时间等. 公司的数据库有很多慢查询日志,导致的系统的负载很高,而mysql慢查询日志文件内容格式不太好看,经推荐使用mysqlsla:使用方便,操作简单. 二.安装mysqlsla 系统环境 CentOS release 6.6 (Final) 2.6.32-504.el6.x86_64 官网已经不能下载,所需要的文件已在百度云

Mysql慢查询日志过程

原创地址 :http://itlab.idcquan.com/linux/MYSQL/922126.html mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出代码实现中耗费资源的sql语句,对我们程序的优化有很高的参考.本篇主要将慢查询日志的开启,日志分析,这也是优化SQL程序的一般步骤中至关重要的一步. 1.mysql慢查询日志 打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加

MySQL慢查询日志相关的配置和使用。

MySQL慢查询日志提供了超过指定时间阈值的查询信息,为性能优化提供了主要的参考依据,是一个非常实用的功能,MySQL慢查询日志的开启和配置非常简单,可以指定记录的文件(或者表),超过的时间阈值等就可以记录到慢sql了,实话讲,相比较sqlserver的trace或者扩展事件(虽然此二者的作用并非仅仅如此),MySQL的配置总是给人一种非常清爽的感觉. 1,慢查询日志的打开 正常情况下,只需要在配置文件中增加slow_query_log = 1配置,即打开慢查询日志,未指定slow_query_

ELK logstash 处理MySQL慢查询日志(初步)

写在前面:在做ELK logstash 处理MySQL慢查询日志的时候出现的问题: 1.测试数据库没有慢日志,所以没有日志信息,导致 IP:9200/_plugin/head/界面异常(忽然出现日志数据,删除索引后就消失了) 2.处理日志脚本问题 3.目前单节点 配置脚本文件/usr/local/logstash-2.3.0/config/slowlog.conf[详细脚本文件见最后] output { elasticsearch { hosts => "115.28.3.150:9200

mysql慢查询日志分析工具 mysqlsla(转)

mysql数据库的慢查询日志是非常重要的一项调优辅助日志,但是mysql默认记录的日志格式阅读时不够友好,这是由mysql日志记录规则所决定的,捕获一条就记录一条,虽说记录的信息足够详尽,但如果将浏览慢查询日志做为一项日常工作,直接阅读mysql生成的慢查询日志就有可能比较低效了. 除了操作系统命令直接查看slowlog外,mysql自己也提供了一个阅读slowlog的命令行工具:mysqldumpslow,该命令行提供了一定的分析汇总功能,可以将多个类似的SQL语句抽象显示成一个,不过功能还是

Linux定时修改MySQL慢查询日志文件名

一:背景介绍 二:编辑修改慢查询日志脚本 三:加入定时任务 1.如果所有慢查询日志都放到一个文件中,那么时间长了,查看慢查询日志将是一件非常痛苦的事情,所以,需要按时间把慢查询日志进行拆分. 2.修改MySQL服务器变量slow_query_log_file的脚本内容 #!/bin/sh #修改MySQL慢查询日志文件名,使每天生成一个慢查询日志文件 #避免所有慢查询日志都放到一个文件中,导致分析查看不方便 USERNAME=root PASSWORD=redhat CURRDATE=`date