分析慢查询日志:
默认会将执行时间超过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 {} \;