天天看点

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,以及如何修复?