您好,登錄后才能下訂單哦!
Anemometer圖形化如何顯示MySQL慢日志的工具搭建及使用?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
介紹:Anemometer 是一個圖形化顯示MySQL慢日志的工具。結合pt-query-digest,Anemometer可以很輕松的幫你去分析慢查詢日志,讓你很容易就能找到哪些SQL需要優化
This is the Box Anemometer, the MySQL Slow Query Monitor. This tool is used to analyze slow query logs collected from MySQL instances to identify problematic queries
環境概況
以寫此文章時 percona-toolkit最新的版本3.0.10為例
mysql數據庫對應版本為5.7.21,二進制安裝
http和php均是系統CentOS Linux release 7.4.1708 (Core)自帶版本
需要安裝的步驟如下:
1.percona-toolkit工具的安裝
2.php web環境的搭建安裝
3.Anemometer并配置
4.導入慢查詢日志
5.訪問界面,查看慢查詢
6.其他相關和問題解決
0. 整體的架構
1. percona-toolkit工具的安裝
安裝目的:pt-query-digest是percona-toolkit里面一個工具,其作用就是分析慢查詢日志,將MySQL慢查詢日志進行統計并友好的顯示出來
下載地址:https://www.percona.com/downloads/percona-toolkit/
安裝方式(rpm):
1、下載包,wget https://www.percona.com/downloads/percona-toolkit/3.0.10/binary/redhat/7/x86_64/percona-toolkit-3.0.10-1.el7.x86_64.rpm
2、安裝依賴,yum install perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Digest-MD5 -y
3、正式安裝,rpm -ivh percona-toolkit-3.0.10-1.el7.x86_64.rpm
4、安裝完畢驗證,pt-query-digest --version pt-query-digest 3.0.10
安裝方式(tar二進制)
1、下載包,wget https://www.percona.com/downloads/percona-toolkit/3.0.10/binary/tarball/percona-toolkit-3.0.10_x86_64.tar.gz
2、安裝依賴,yum install perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Digest-MD5 -y
3、解壓包,tar xf percona-toolkit-3.0.10_x86_64.tar.gz
4、直接使用工具, ./percona-toolkit-3.0.10/bin/pt-query-digest --version
pt-query-digest 3.0.10
2. php web環境的搭建
安裝目的:Anemometer需要依賴
LAMP環境LAMP環境的安裝:
1、安裝apache,yum install httpd httpd-devel -y
2、安裝php,yum install php php-mysql php-common php-bcmath php-dba php-cli php-gd php-mbstring php-mcrypt php-devel php-xml php-pdo -y
3、修改時區,vim /etc/php.ini
,修改為 date.timezone = PRC
LAMP環境的啟動:
1、啟動,systemctl start httpd
2、關閉,systemctl stop httpd
3、重啟,systemctl restart httpd
4、查看,systemctl status httpd
3. 安裝Anemometer并配置
1、下載安裝:
安裝目的:安裝Anemometer應用
下載地址:https://github.com/box/Anemometer
下載包:git clone https://github.com/box/Anemometer.git
移動到對應路徑:mv Anemometer /var/www/html/anemometer
2、目標慢查詢數據庫上需要授予Anemometer主機對應的權限
1、目的,用于分析目標慢查詢數據庫explain執行計劃
2、授權,grant select on *.* to 'anemometer'@'$ip' identified by '123456';flush privileges
;($ip為Anemometer主機對應ip地址)
3、修改配置文件增加explain讀取用戶密碼信息 cp conf/sample.config.inc.php conf/config.inc.php vim conf/config.inc.php\\
4、修改配置文件指向數據源文件,vim conf/datasource_localhost.inc.php,當然也可以直接vim conf/config.inc.php
5、初始化數據源的數據庫表的配置,mysql -uroot -p123456 -h227.0.0.1 -P5700 < install.sql,每個datasource源頭可以對應不同的數據庫database(修改install.sql的內容)
4. 導入慢查詢日志
1、慢查詢主機推送格式
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、慢查詢主機推動腳本示例
#config anemometer server, the purpose is to push slow query to the remote anemometer server and store it. anemometer_host="127.0.0.1" anemometer_user="root" anemometer_password="123456" anemometer_port=5700 anemometer_db="slow_query_log" #config mysql server, the purpose is to get the path of the slow query log. mysql_client="/usr/local/mysql-5.7.21/bin/mysql" mysql_user="root" mysql_password="123456" mysql_socket="/tmp/mysql_5700.sock" mysql_port=5700 #config slowqury dir to cd, and then delete the expired slow query file. slowquery_dir="/data/mysql_$mysql_port/" #get the path of the slow query log. slowquery_file=`$mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "show variables like 'slow_query_log_file'"|grep log|awk '{print $2}'` pt_query_digest="/data/percona-toolkit-3.0.10/bin/pt-query-digest" #collect mysql slowquery log into lepus database. $pt_query_digest --user=$anemometer_user --password=$anemometer_password --port=$anemometer_port --review h=$anemometer_host,D=$anemometer_db,t=global_query_review --history h=$anemometer_host,D=$anemometer_db,t=global_query_review_history --no-report --limit=0% --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME:$mysql_port\"" $slowquery_file #generate a new slow query log, the below is generate a new slow file per hour. tmp_log=`$mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "select concat('$slowquery_dir','slowquery_',date_format(now(),'%Y%m%d%H'),'.log');"|grep log|sed -n -e '2p'` #use new slow file to config mysql slowquery $mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "set global slow_query_log = 0;set global slow_query_log_file = '$tmp_log';" $mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "set global slow_query_log = 1; " #delete slow query file before 2 days cd $slowquery_dir /usr/bin/find ./ -name 'slowquery_*.log' -mtime +2|xargs rm -rf ; ####END####
5. 訪問界面,查看慢查詢
http://$ip/anemometer/ ($ip為Anemometer主機對應ip地址)
6、其他相關和問題解決
1、對于anemometer的主機上,需要進行慢查詢主機hostname和ip的映射(修改/etc/hosts進行配置),目的在于慢查詢explain執行計劃的目標主機解析
#collect mysql slowquery log into lepus database步驟中,$HOSTNAME:$mysql_port
數據庫存取的格式,hostname_max類似這種,cnwangdawei:5700
2、中文亂碼的問題,在#collect mysql slowquery log into lepus database步驟中添加 --charset=utf8
3、慢查詢主機數據庫是5.7版本的數據庫,可能出現界面ts_cnt不顯示,替換percona toolkit為新版本,2.x.x -----> 3.x.x
4、表結構和狀態字符集顯示亂碼,添加mysqli的字符集設定,vim /var/www/html/anemometer/lib/QueryExplain.php
新增(194行后增加),$this->mysqli->query("set names utf8");
看完上述內容,你們掌握Anemometer圖形化如何顯示MySQL慢日志的工具搭建及使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。