mysql日志分析工具之mysqlsla


背景介紹

很多情況下,都需要對MySQL日志進行各種分析,來了解系統運行的方方面面。MySQL官方自帶了一些工具對日志進行分析,比如mysqlbinlog可以用來分析二進制日志,mysqlslow可以用來分析慢查詢日志,但這些工具相對功能較為單一,而且對查詢日志沒有提供分析工具。因此,很多第三方工具應用而生,而mysqlsla(MySQL Statement Log Analyzer)是其中使用較為廣泛的一個。

目前常見mysql慢查詢分析工具大概歸納為:

工具 / 命令 一般統計信息 高級統計信息 腳本 優勢
mysqldumpslow 支持 不支持 perl mysql官方自帶
mysqlsla 支持 支持 perl 功能強大,數據報表齊全,定制化能力強
mysql-explain-slow-log 支持 不支持 perl
mysql-log-filter 支持 部分支持 python / php 不失功能的前提下,保持輸出簡潔
myprofi 支持 不支持 php 非常精簡

 

 

 

 

 

 

還有pt-query-digest(需要安裝Percona Toolkit)等其他工具,這里只記錄一下mysqlsla常見使用方法。

 

測試環境

centos7 / mysql 5.6(開啟慢查詢功能)

 

安裝操作

下載:https://github.com/daniel-nichter/hackmysql.com

1. 安裝依賴

[root@server-10 ~]# yum install  perl  perl-DBI  perl-DBD-MySQL perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

2. 切換到mysqlsla目錄進行編譯安裝

[root@server-10 mysqlsla]# perl Makefile.PL 
Checking if your kit is complete...
Looks good
Writing Makefile for mysqlsla
[root@server-10 mysqlsla]# make
cp lib/mysqlsla.pm blib/lib/mysqlsla.pm
cp bin/mysqlsla blib/script/mysqlsla
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/mysqlsla
Manifying blib/man3/mysqlsla.3pm
[root@server-10 mysqlsla]# make install
Installing /usr/local/share/perl5/mysqlsla.pm
Installing /usr/local/share/man/man3/mysqlsla.3pm
Installing /usr/local/bin/mysqlsla             //生成了mysqlsla命令
Appending installation info to /usr/lib64/perl5/perllocal.pod

3. 使用mysqlsla命令

[root@server-10 ~]# mysqlsla -lt slow --sort t_sum --top 20 mysql-slow.log > /tmp/select.log

// 查詢記錄最多的20個sql語句,並寫到select.log中去。
[root@server-10 ~]# mysqlsla -lt slow  -sf "+select" -top 100  mysql-slow.log >/tmp/sql_select.log

// 統計慢查詢文件為mysql-slow.log中的所有select的慢查詢sql,並顯示執行時間最長的100條sql,並寫到sql_select.log中去
root@server-10 ~]# mysqlsla -lt slow  -sf "+select,update" -top 100 -sort c_sum  -db mydata mysql-slow.log >/tmp/sql_num.log

// 統計慢查詢文件為mysql-slow.log的數據庫為mydata的所有select和update的慢查詢sql,並查詢次數最多的100條sql,並寫到sql_num.sql中去

 參數說明

"--log-type (-lt) TYPE LOGS"  // 指定日志類型
Parse MySQL LOGS of TYPE. Default none. TYPE must be either slow, general, binary, msl or udl. LOGS is a space-separated list of MySQL log files.


 "--statement-filter (-sf) CONDTIONS"  // 語句過濾,“+”和“-”分別表示“僅顯示”和“僅去掉”

Set SQL statement filter using CONDITIONS. Default none. CONDITIONS is a comma-separated list of SQL statement types in the form:
[+-][TYPE],[TYPE],etc.


 "--top N"  // 最top的N條,默認顯示top 10

After sorting display only the top N queries. Default 10.


 "--sort META"  // 按指定排序,默認慢查詢和微秒查詢會按照總執行時間“t_sum”來排序,其他日志默認按照“c_sum”

Sort queries according to META. Default t_sum for slow and msl logs, c_sum for all others. META is any meta-property name.


 "--databases (-db) (-D) DATABASES"   // 指定數據庫

Try EXPLAINing queries which have no known database using DATABASES. Default none. DATABASES is a comma-separated list of database names (without
spaces). Only used when option explain is used too.


 其他參數可通過man mysqlsla查詢。

 

 

結束.

其他參考:

https://www.jb51.net/article/27191.htm

https://yq.aliyun.com/articles/59260

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM