什麼是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 .
這裡說的,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 mysqlsla2.03.tar.gz
tar -xvfz mysqlsla2.03.tar.gz
cd mysqlsla2.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,以及如何修複?