環境介紹:
yum用的是163的源: CentOS6-Base-163.repo
操作新系統:Red Hat Enterprise Linux Server release 6.4
數據庫版本:5.6.27
PHP版本:5.3.3 #要求php版本大於5.3
percona-toolkit:2.2.17
10.10.203.102【web服務器】
10.10.203.93 【被監控端】
需要在兩臺機器上都做的操作,步驟上有備註。
操作步驟:
1. percona-toolkit工具的安裝
10.10.203.93和10.10.203.102 都安裝
pt-query-digest是percona-toolkit裏面一個工具,其作用就是分析慢查詢日誌,將MySQL慢查詢日誌進行統計並友好的顯示出來。
# wget https://www.percona.com/downloads/percona-toolkit/2.2.17/RPM/percona-toolkit-2.2.17-1.noarch.rpm
# rpm -ivh percona-toolkit-2.2.17-1.noarch.rpm
# which pt-query-digest
/usr/bin/pt-query-digest
至此,pt-query-digest安裝完畢
2. php web環境的搭建
10.10.203.102 上操作
yum install httpd httpd-devel
yum install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml php-bcmath
修改時區:
yum安裝的php,配置文件默認在/etc/php.ini.
#對pgm用戶授權【10.10.203.102和10.10.206.93】
mysql> grant all on *.* to 'pgm'@'10.10.%' identifiedby 'pgmfetion';
mysql> flush privileges;
3. 安裝Anemometer並配置
下載地址: https://github.com/box/Anemometer
下載完後名爲:Anemometer-master.zip
unzip Anemometer-master.zip
mv Anemometer-master /var/www/html/anemometer
#導入初始化庫表 【10.10.203.102和10.10.206.93】
cd /var/www/html/anemometer
mysql -S /tmp/mysql3307.sock -uroot -psecret <install.sql
mysql -S /tmp/mysql3307.sock -uroot -psecret <mysql56-install.sql
#修改配置文件
cd /var/www/html/anemometer/conf
cp sample.config.inc.php config.inc.php
vim config.inc.php
啓動http服務
/etc/init.d/httpd start
訪問地址:
http://10.10.203.102/anemometer/
頁面能打開,但是不會有數據。
4. 導入慢查詢日誌
查看慢查詢的時間,爲了測試,我改的很小。慢查詢日誌的位置slow.log沒有指定,默認會在data目錄下。
請參照readme 執行相應命令: For pt-query-digest version < 2.2 $ pt-query-digest --user=anemometer --password=superSecurePass \ --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\"" \ /var/lib/mysql/db.example.com-slow.log For pt-query-digest version >= 2.2 $ pt-query-digest --user=anemometer --password=superSecurePass \ --review h=db.example.com,D=slow_query_log,t=global_query_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\"" \ /var/lib/mysql/db.example.com-slow.log
我的版本大於 2.2,所以執行下邊的命令。
10.10.203.102【web服務器】機器:
pt-query-digest --user=pgm --password=pgmfetion --port=3307 \ --review h=10.10.203.102,D=slow_query_log,t=global_query_review \ --history h=10.10.203.102,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/mysql3307/data/slow.log
10.10.203.93【被監控端】機器:
pt-query-digest --user=pgm --password=pgmfetion --port=7777 \ --review h=10.10.203.93,D=slow_query_log,t=global_query_review \ --history h=10.10.203.93,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/mysql7777/data/slow.log
重新訪問: http://10.10.203.102/anemometer/
兩個DB實例,選擇你要查看的DB.
5. 日誌切割:
可以用日誌切割工具logrotate來自動切割慢日誌,並在切割後自動執行分析命令,mysql.slow.conf 配置文件如下:
/data/mysql/mysql3307/data/slow.log { create 660 mysql mysql su root mysql dateext daily missingok rotate 360 notifempty copytruncate postrotate pt-query-digest --user=pgm --password=pgmfetion --port=3307 \ --review h=10.10.203.102,D=slow_query_log,t=global_query_review \ --history h=10.10.203.102,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/mysql3307/data/slow.log-$(date +%Y%m%d) endscript }
通過定時任務來執行logrotate -f mysql.slow.conf,也可以將配置文件放到/etc/logrotate.d目錄下。
10.10.206.93 操作同上。
備註:
(1)日誌切換,也可以自己寫個腳本,方法不限。
(2)目前不支持5.7的數據庫,導入默認初始化表結構會報異常,默認時間戳在5.7中發生了變化。
https://github.com/box/Anemometer/issues/175
The install sql file does not create the tables properly during first setup. It appears to be due to a change in the default timestamp format in 5.7.