最近发现了一个挺好用的MySQL慢查询日志可视化的工具,网上也能找到不少资料,在这里结合本身的实际状况从新整理一下。php
操做系统:CentOS 6.5 64位 主机地址:10.0.0.26 主机名:mysql01 mysql版本:mysql-5.6.36
http环境:LAMP 可视化软件:Anemometer-master.zip, percona-toolkit-3.0.11-1.el6.x86_64.rpm, perl-TermReadKey-2.30-13.el6.x86_64.rpm
采用源码编译安装的方式来安装MySQL服务,并开启慢查询日志功能。
安装依赖:html
yum -y install ncurses-devel libaio-devel cmake
建立用户:mysql
useradd -s /sbin/nologin -M mysql
下载MySQL源码包:git
cd /usr/local/src wget -q http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz
解压,编译安装github
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
初始化数据库:sql
\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环境变量:apache
echo 'PATH=/opt/mysql/bin/:$PATH' >>/etc/profile source /etc/profile
修改配置文件,开启慢查询日志:vim
[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服务:centos
/etc/init.d/mysqld restart
Percona Toolkit是一组高级的命令行工具,用来管理mysql和系统任务,主要包括:
1:验证主节点和复制数据的一致性 2:有效的度记录行进行归档 3:找出重复的索引 4:总结MySQL服务器 5:从日志和tcpdump中分析查询 6:问题发生时收集重要的系统信息
安装依赖:
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命令安装
[root@mysql02 src]# rpm -ivh perl-TermReadKey-2.30-13.el6.x86_64.rpm Preparing... ########################################### [100%] 1:perl-TermReadKey ########################################### [100%] [root@mysql02 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%]
官网:https://github.com/box/Anemometer
cd /usr/local/src &&\ wget https://github.com/box/Anemometer/archive/master.zip
在安装以前须要先确认epel-release,php_mysqli模块须要版本epel-release-6-8.noarch才会有。咱们在以前安装PT工具的时候已经更新了epel源,所以能够直接yum安装。
yum -y install httpd php *bcmath* *mysqli*
检查安装结果:
[root@mysql02 ~]# 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 #<==若是没有这两个,必须先安装
移动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)
anemometer配置:
vim /var/www/html/anemometer/conf/sample.config.inc.php
php配置:
vim /etc/php.ini,注意本身的socket文件所在位置
apache配置:
vim /etc/httpd/conf/httpd.conf
启动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
到此,完成全部安装配置!结果展现以下: