最近在看《高性能MySQL》,作者們背靠Percona向我展示了以前從不知道的一些關於MySQL的知識以及各種分析優化工具,比如這裏要說的pt-query-digest。
什麼是pt-query-digest?
pt-query-digest是一個可以分析MySQL日誌(query、slow和binglog)、processlist和tcpdump的工具。
安裝篇
pt-query-disest是用Perl寫的一個文件,下載下來就可以使用。將下載下來的pt-query-digest文件放在環境變量目錄下,方便使用。
wget percona.com/get/pt-query-digest
chmod u+x pt-query-digest
chmod u+x pt-query-digest
準備篇
執行命令 pt-query-digest ,發現如下錯誤信息,原因在於我們的系統缺少一個Perl包導致的。
Can't locate Time/HiRes.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/bin/pt-query-digest line 3187.
BEGIN failed--compilation aborted at /usr/local/bin/pt-query-digest line 3187.
BEGIN failed--compilation aborted at /usr/local/bin/pt-query-digest line 3187.
解決方案
yum install -y perl-Time-HiRes
或
apt-get install -y perl-Time-HiRes
風險
在沒有真正掌握pt-query-digest工具之前,請不要在生產環境就使用pt-query-digest。如果一定要使用,請先做好數據備份、閱讀詳細的文檔以及瞭解目前已知的BUG。
使用篇
現在就可以來使用了,比如我這裏有一份mysql的查詢日誌mysql_query.log,那麼就可以通過下面的命令對該日誌進行一個粗略的分析。
pt-query-degest mysql_query.log
Usage
pt-query-digest [OPTIONS] [FILES] [DSN]
上面只是一個粗略的分析,當然實際當中我們還有許多需求,比如分析具體哪一段時間的日誌、或者將分析結果導出來等等的需求。pt-query-digest的衆多參數都可以幫我們解決問題。
更多的詳細參數信息、processlist以及tcpdump可以點擊下方官方給出的文檔