天天看點

MySQL日志分析神器之mysqlsla

什麼是mysqlsla?

mysqlsla 能解決什麼問題?

為什麼選擇mysqlsla?

分析mysql日志的工具當然不止mysqlsla一種,據我所知的有:

mysqldumpslow

mysqlbinlog

myprofi

mysql-explain-slow-log

mysql-log-filter

pt-query-digest

mysqlsla

下面做一個對比:

工具

一般統計

進階統計

語言

優勢

針對log

支援

不支援

perl

mysql官方自帶

slow

php

簡單

部分支援

python

二進制

binary log

總能強大,使用簡單,自定義能力強

所有日志,包括自定義日志

根據以上特點,最适合的工具非 mysqlsla 與 pt-query-digest 莫屬。 mysqlsla與pt-query-digest的作者是同一個人。現在主打開發pt系列工具。由于個人已經使用過mysqlsla 三年,被其強大的功能所吸引,可以完成dba工作的99%的需求,是以這裡詳細介紹mysqlsla的使用,并對現有mysqlsla的一些不足,進行二次開發。

大緻将mysqlsla 分解出來分為: mysqlsla的安裝,mysqlsla的功能,mysqlsla的用法,mysqlsla 的filter,mysqlsla的report,mysqlsla的replay,mysqlsla的user-defined-logs。 其中最核心的當然是:filter以及report。

大緻流程是: logs(udl,defalut) -> parse -> filter -> sort -> reprot -> replay .

MySQL日志分析神器之mysqlsla

這裡說的,mysqlsla可以處理任意日志。預設可以處理mysql的三種常見日志。

如:general log,binary log,slow log

slow log: mysqlsla ­lt slow slow.log

general log: mysqlsla ­lt general general.log

binary log: mysqlbinlog bin.log | mysqlsla ­lt binary ­

download mysqlsla­2.03.tar.gz

tar -xvfz mysqlsla­2.03.tar.gz

cd mysqlsla­2.03

perl makefile.pl

make

make install

.mysqlsla config file

~.mysqlsla 這個檔案,類似mysql 裡面的配置檔案.cnf。 mysqlsla 啟動都會讀取這個全局配置檔案。如:

注意點: 這裡的參數,不能加 -- 或者 -

基本指令和使用

這裡羅列一下在mysql工作中最最最常用的指令,使用率在80%

filter 分為兩種:

statment , 上面已經詳細介紹過,這裡詳細介紹meta-property filter。

meta[value] , 這裡詳細介紹什麼是meta,meta有哪些值。

由于種類實在是太多,是以這裡也隻會列出工作中,最最最常用的meta參數,基本可以解決99%的需求。

log類型

meta

解釋

限制

all

c_sum

sql次數總和

db

db名稱

隻能用作meta-filter,不能用作sort

exec

真實執行時間

隻能用做sort,不能filter

exec_sum

c_sum*exec

隻能作用sort,不能filter

host

主機名

ip

ip位址

l_avg

鎖的平均等待時間

re_sum

rows_examined的總和

re_avg

rows_examined的平均值

rs_sum

rows_sent的總和

rs_avg

rows_sent的平均值

t_sum

sql執行時間的總和

t_avg

sql執行時間的平均值

user

使用者名

general

cid

連接配接id

binary

ext

執行時間

udl

詳細過濾的過程,請參考 mysql::log::parsefilter 子產品。

上列出的meta-property name,不僅僅用于filter,更加可以用于sort,是以sort我就不重複,使用規則請參考filter。

基本格式為:standard,但是你可以自己覆寫掉standard格式輸出。這裡的report format,為了相容所有人,這裡都是用sprintf 進行輸出,而不是用perl 自己的格式,是以通用性非常的強。

比如用--report-­format (-rf)file 可以替換。

然後基本模闆如下:

一個自定義的slow标準模闆

一個自定義的general log标準模闆

一個自定義的binary log标準模闆

一個自定義的msl log标準模闆

一個自定義的udl log标準模闆

這也就是平時看到的預設格式。個人覺得這個功能非常好用,當然标準格式就已經滿足90%的需求,當然對于比較特殊的需求,可以做特殊的格式化輸出。

非常強大,誰用誰知道。

這些進階功能,我用的比較少,是以這裡不多介紹。如果大家實在想用,可以參考官方文檔。

這裡,基本上已經将mysqlsla的使用都介紹了一遍,如果你還沒有使用,那就趕緊使用吧。

如果還想知道更多的内如:

1)mysqlsla 是如何進行filter的?

2)mysqlsla 是如何進行abstract-in sql的?

3)mysqlsla 是如何進行sql解析的?

4)mysqlsla 的内部工作流程和原理?

5)mysqlsla 的bug list,以及如何修複?