当前位置: 首页 > 工具软件 > mysqlsla > 使用案例 >

mysql日志分析工具_mysql日志分析工具之mysqlsla

经骁
2023-12-01

背景介绍:

很多情况下,都需要对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(开启慢查询功能)

安装操作:

1. 安装依赖

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

2. 切换到mysqlsla目录进行编译安装

[root@server-10 mysqlsla]# perlMakefile.PL

Checkingifyour kit is complete...

Looks good

Writing Makefileformysqlsla

[root@server-10 mysqlsla]# make

cp lib/mysqlsla.pm blib/lib/mysqlsla.pmcp 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 installInstalling/usr/local/share/perl5/mysqlsla.pm

Installing/usr/local/share/man/man3/mysqlsla.3pm

Installing/usr/local/bin/mysqlsla             //生成了mysqlsla命令

Appending installationinfo 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查询。

结束.

其他参考:

 类似资料: