MySQL分析慢查询日志

分析慢查询日志:

默认会将执行时间超过10秒的SQL语句记录在慢查询日志中

使用mysqldumpslow命令,MySQL自带的工具,不大常用

[mysql@mysql1 ~]$ mysqldumpslow -s c -t 1 /data/mysqldata/3306/slow_query.log

-s t:按照总的查询时间排序

-s at:按照平均查询时间排序

-s l:按照总的锁定时间排序

-s al:按照平均的锁定时间排序

-s s:按照总的记录行数排序

-s as:按照平均的记录行数排序

-s c:按照语句执行的次数排序,默认排序方式

-r:按照排序规则倒序输出

-t:用来控制输出的sql语句的数量

 

使用mysqlsla命令,第三方分析工具

[root@mysql1 ~]# perl -MCPAN -e shell

cpan 1 >install Time::HiRes

cpan 2 >install File::Temp

cpan 3 >install Data::Dumper

cpan 4 >install DBI

cpan 5 >install Getopt::Long

cpan 6 >install Storable

cpan 7 >install Term::ReadKey

编译安装

[root@mysql1 /]# tar xvfz mysqlsla-2.03.tar.gz

[root@mysql1 /]# cd mysqlsla-2.03

[root@mysql1 /]# perl Makefile.PL

[root@mysql1 /]# make

[root@mysql1 /]# make && make install

[root@mysql1 /]# mysqlsla -lt slow [slowlogfilepath] > [resultfilepath]

[root@mysql1 /]# mysqlsla -lt slow --top 50 /data/mysqldata/3306/slow_query.log

支持不同格式的日志

slow:慢查询日志

general:普通查询日志

binary:二进制日志,需要通过mysqlbinlog命令处理

 

使MySQL实例中的slowlog文件每日自动归档,而后调用mysqlsla命令对归档的慢查询日志文件进行分析,并将分析后的文件自动发送至DBA邮箱

[root@mysql1 scripts]# more mysql_slowlog_file_archive.sh

#Created by allen

#Init environment variables

LOG_FILEPATH=/data/mysqldata/logs

LOG_FILENAME=${LOG_FILEPATH}/slow-n.log.`date +%F`

LOG_ANALYZE=${LOG_FILEPATH}/slow-ana.log.`date +%F`

SLOWLOG_FILENAME=/data/mysqldata/3306/slow_query.log

#Do the Job!

/bin/cp -f ${SLOWLOG_FILENAME} ${LOG_FILENAME}

/bin/echo "" > ${SLOWLOG_FILENAME}

/usr/bin/mysqlsla -lt slow ${LOG_FILENAME} --top 100 -Ai 1000 > ${LOG_ANALYZE}

/bin/cat ${LOG_ANALYZE} | iconv -f utf-8 -t gb18030 | mail -s "[`date +%F`] MySQL SlowLogs From 3306" [email protected]

#Delete slowlog history

/usr/bin/find ${LOG_FILEPATH} -mtime +7 -exec rm {} \;

 

 

 

 

 

猜你喜欢

转载自allenhu0320.iteye.com/blog/2186153