使用Anemometer基于pt-query-digest將MySQL慢查詢日志可視化

XQKDon 8年前發布 | 15K 次閱讀 MySQL 數據庫服務器

MySQL慢查詢日志分析工具不少,比如:

1、mysqldumpslow,MySQL官方提供。

2、mysqlsla,hackmysql.com推出的一款日志分析工具。功能非常強大,數據報表,非常有利于慢查詢分析,包括執行頻率、數據量和查詢消耗等。

雖然都可以滿足日常的使用,但是不夠直觀,并且無法方便開發人員進一步完善SQL語句。

pt-query-digest

是用于分析mysql慢查詢的一個工具,它可以分析binlog、General log、slowlog,也可以通過SHOWPROCESSLIST或者通過tcpdump抓取的MySQL協議數據來進行分析。可以把分析結果輸出到文件中,分析過程是先對查詢語句的條件進行參數化,然后對參數化以后的查詢進行分組統計,統計出各查詢的執行時間、次數、占比等,可以借助分析結果找出問題進行優化。

Anemometer

將MySQL慢查詢log可視化。

MySQL開啟慢查詢日志

不同的版本,MySQL開啟慢查詢日志方式有點不同。可以通過

#show variables like '%slow%'

命令查看都需要配置哪些參數。以5.6版本為例,修改my.cnf的數據庫配置文件

slow_query_log = ON
slow_launch_time = 2
slow_query_log_file = /自定義日志目錄/mysql-slow.log
log_queries_not_using_indexes = 1  //沒有使用到索引的查詢也將被記錄在日志中

安裝pt-query-digest

1、下載 wget percona.com/get/percona-toolkit.rpm

2、安裝 yum install -y percona-toolkit.rpm

3、給出pt-query-digest參考配置

pt-query-digest --user=數據庫用戶名 --password=數據庫密碼 --review h=數據庫IP和域名,D=slow_query_log,t=global_query_review --history h=數據庫IP和域名,D=slow_query_log,t=global_query_review_history --no-report --limit=0% --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" 數據庫日志文件地址

4、語法及重要選項

pt-query-digest[OPTIONS] [FILES] [DSN]

–create-review-table當使用–review參數把分析結果輸出到表中時,如果沒有表就自動創建。

–create-history-table當使用–history參數把分析結果輸出到表中時,如果沒有表就自動創建。

–filter對輸入的慢查詢按指定的字符串進行匹配過濾后再進行分析

–limit限制輸出結果百分比或數量,默認值是20,即將最慢的20條語句輸出,如果是50%則按總響應時間占比從大到小排序,輸出到總和達到50%位置截止。

–hostMySQL服務器地址

–usermysql用戶名

–passwordmysql用戶密碼

–history將分析結果保存到表中,分析結果比較詳細,下次再使用–history時,如果存在相同的語句,且查詢所在的時間區間和歷史表中的不同,則會記錄到數據表中,可以通過查詢同一CHECKSUM來比較某類型查詢的歷史變化。

–review將分析結果保存到表中,這個分析只是對查詢條件進行參數化,一個類型的查詢一條記錄,比較簡單。當下次使用–review時,如果存在相同的語句分析,就不會記錄到數據表中。

–output分析結果輸出類型,值可以是report(標準分析報告)、slowlog(Mysql slow log)、json、json-anon,一般使用report,以便于閱讀。

–since從什么時間開始分析,值為字符串,可以是指定的某個”yyyy-mm-dd [hh:mm:ss]”格式的時間點,也可以是簡單的一個時間值:s(秒)、h(小時)、m(分鐘)、d(天),如12h就表示從12小時前開始統計。

–until截止時間,配合—since可以分析一段時間內的慢查詢。

5、分析報告圖如下:

安裝Anemometer

1、安裝說明和配置pt-query-digest 請參考 https://github.com/box/Anemometer

2、Anemometer配置,如果監控多個數據庫,配置多個即可。

$conf['datasources']['localhost'] = array(
 'host' => 'db.example.com',
 'port' => 3306,
 'db' => 'slow_query_log',
 'user' => 'anemometer',
 'password' => 'superSecurePass',
 'tables' => array(
 'global_query_review' => 'fact',
 'global_query_review_history' => 'dimension'
 )
);

4、Anemometer可以獨立配置在單獨的服務器上,方便管理。

5、結果如下

總結

1、使用Anemometer可視化MySQL的慢查詢日志,方便開發人員查看。

2、從網上學習的資料了解到,pt-query-digest對系統的資源開銷較大。解決辦法可以將日志拷貝到測試機器上,進行分析。

參考鏈接:

1、 https://www.percona.com/doc/percona-toolkit/2.2/installation.html

2、 pt-query-digest查詢日志分析工具教程

3、http://www.cnblogs.com/xuanzhi201111/p/4128894.html

 

來自: http://blog.mofeiwo.com/使用anemometer基于pt-query-digest將mysql慢查詢日志可視化/

 

 本文由用戶 XQKDon 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!