mysql mysqlsla_MySQL慢日志分析工具mysqlsla安装及使用指南

MySQL慢日志分析工具mysqlsla安装及使用详细说明

最后更新时间:2013-01-29

• 2013-01-18 首次整理成文档

• 2013-01-29 发布到博客并整理添加了实例及工具对比表

一、MySQL慢日志分析意义

在运营 PHP+MySQL 网站的过程中,可能会遇到网站突然变慢的问题,一般情况下和 MySQL 慢有关系,可以通过开启慢查询来记录超过指定时间的SQL语句,MySQL慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,找到影响效率的SQL语句,然后采取相应的措施进行代码或缓存等优化,从而提高整个系统的性能。

关于MySQL慢查询记录日志启用可以参考这篇文章:二、常见的5种MySQL日志文件分析工具:

# mysqldumpslow slow_query_9.log    (推荐)

[root@monitor opt]# mysqlsla -lt  slow slow_query_9.log  (强烈推荐)

[root@monitor opt]# php parser.php -slow slow_query_9.log (php强烈推荐)

[root@monitor opt]# ./mysql_explain_slow_log --user=root --password=123456 < slow_query_9.log  (不推荐)

[root@monitor opt]# python mysql_filter_slow_log.py --no-duplicates slow_query_9.log (推荐)

以上命令是在CentOS系统下测试

5种MySQL日志文件分析工具对比:

5ff5c06598ac274eccd5f5a49304425d.png

本文主要介绍mysqlsla日志分析工具,这里不再多赘述其他。

三、mysqlsla分析工具安装

mysqlsla工具是hackmysql.com推出的一款日志分析工具(该网站还维护了 mysqlreport, mysqlidxchk 等比较实用的mysql工具)。整体来说,功能非常强大。数据报表,非常有利于分析慢查询的原因,包括执行频率,数据量,查询消耗等。

1、下载 mysqlsla附官方网站:http://hackmysql.com/mysqlsla

[root@monitor opt]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz

2、解压并进入安装目录[root@monitor opt]# tar -zxvf mysqlsla-2.03.tar.gz

[root@monitor opt]# cd mysqlsla-2.03

[root@monitor mysqlsla-2.03]# less INSTALL    //浏览下安装说明

3、执行perl脚本检查包依赖关系[root@monitor mysqlsla-2.03]# perl Makefile.PL

Checking if your kit is complete...

Looks good

Writing Makefile for mysqlsla

补充:安装mysqlsla需要perl-DBI和per-DBD-Mysql两模块的支持,centos下安装mysql自动安装了这2个模块。

4、安装mysqlsla[root@monitor mysqlsla-2.03]#make && make install

常见错误:

1)类似错误:Can't locate ExtUtils/MakeMaker.pm OR Time/HiRes.pm in @INC

可参考这篇文章:四、mysqlsla分析工具使用说明

语法:

Slow log: mysqlsla -lt slow slow.log

General log: mysqlsla -lt general general.log

Binary log: mysqlbinlog bin.log | mysqlsla -lt binary -

这里以slow log为例:[root@monitor mysqlsla-2.03]# mysqlsla -lt slow /opt/slow.log | more

mysqlsla -lt slow /opt/slow.log  | more

Use of uninitialized value $line in pattern match (m//) at /usr/local/bin/mysqlsla line 675, line 211.

Use of uninitialized value $line in pattern match (m//) at /usr/local/bin/mysqlsla line 692, line 211.

Report for slow logs: /opt/slow.log

35 queries total, 15 unique

Sorted by 't_sum'

Grand Totals: Time 229 s, Lock 0 s, Rows sent 443.57k, Rows Examined 10.11M

______________________________________________________________________ 001 ___

Count         : 7  (20.00%)

Time          : 42.930986 s total, 6.132998 s avg, 4.046063 s to 10.72709 s max  (18.76%)

Lock Time (s) : 354 otal, 51 vg, 38 o 65 ax  (15.26%)

Rows sent     : 54 avg, 54 to 54 max  (0.09%)

Rows examined : 1.58k avg, 222 to 4.57k max  (0.11%)

Database      : dz_nanchang

Users         :

dz_nanchang@ 192.168.1.10 : 42.86% (3) of query, 11.43% (4) of all users

dz_nanchang@ 192.168.1.15 : 42.86% (3) of query, 8.57% (3) of all users

dz_nanchang@ 192.168.1.20 : 14.29% (1) of query, 2.86% (1) of all users

Query abstract:

SET timestamp=N; SELECT t.* FROM pre_forum_thread t WHERE t.fid='S' AND (t.displayorder IN (N2)) ORDER BY displayorder DESC, lastpost DESC LIMIT N;

Query sample:

SET timestamp=1354213966;

SELECT t.* FROM pre_forum_thread t

WHERE  t.fid='139'  AND (t.displayorder IN (0, 1))

ORDER BY displayorder DESC, lastpost DESC

LIMIT 54;

……………………

……………………

统计结果选项说明:

总查询次数 (queries total), 去重后的sql数量 (unique)

输出报表的内容排序(sorted by)

最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.

Count, sql的执行次数及占总的slow log数量的百分比.

Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.

95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.

Lock Time, 等待锁的时间.

95% of Lock , 95%的慢sql等待锁时间.

Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量.

Rows examined, 扫描的行数量.

Database, 属于哪个数据库

Users, 哪个用户,IP, 占到所有用户执行的sql百分比

Query abstract, 抽象后的sql语句

Query sample, sql语句

mysqlsla常用参数说明:--log-type (-lt) type logs:

通过这个参数来制定log的类型,主要有slow, general, binary, msl, udl,分析slow log时通过制定为slow.

--sort:

制定使用什么参数来对分析结果进行排序,默认是按照t_sum来进行排序。

t_sum:按总时间排序

c_sum:按总次数排序

c_sum_p: sql语句执行次数占总执行次数的百分比。

--top:

显示sql的数量,默认是10,表示取按规则排序的前多少条

--statement-filter (-sf) [+-][TYPE]:

过滤sql语句的类型,比如select、update、drop.

[TYPE]有SELECT, CREATE, DROP, UPDATE, INSERT,例如"+SELECT,INSERT"。

A +表示正过滤器:只保留SQL语句[TYPE]。A - 表示负的过滤:仅删除SQL语句[TYPE]。如果没有给定, - 是默认的,即不包括。

--databases db:

要处理哪个库的日志

更多参数定制可参考官方:http://hackmysql.com/mysqlsla_documentation

使用举例

1)将慢日志/opt/slow.log中执行时间最长的10条sql显示并写到/opt/slowlog_10.log中。[root@monitor mysqlsla-2.03]# mysqlsla -lt slow  -sf "+select" -top 10 /opt/slow.log >/opt/slowlog_10.log

2)将慢日志/opt/slow.log中数据库为sql_dz的所有select和update的慢sql,显示并将查询次数最多的100条写到/opt/slowlog_su100.log中。[root@monitor mysqlsla-2.03]#mysqlsla -lt slow  -sf "+select,update" -top 100 -sort c_sum -db sql_dz /opt/slow.log >/opt/slowlog_su100.log

3)只取backup库的select语句、按c_sum_p排序的前2条记录[root@monitor mysqlsla-2.03]#mysqlsla -lt slow -sort c_sum_p  -sf  "+select" -db backup -top 2  /opt/slow.log

最后更新于 2013-01-29 22:27:30 并被添加「mysqlsla mysql优化 mysql日志 mysql性能优化 日志分析」标签,已有 23224 位童鞋阅读过。

本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处

相关文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值