美文网首页
MySQL慢日志分析

MySQL慢日志分析

作者: super_pcm | 来源:发表于2019-09-29 14:14 被阅读0次

这里借助 percona的pt-query-digest工具对mysql的慢日志做分析,这里使用mysql5.5做例子。


1. 下载分析工具

cd /usr/local/src
wget percona.com/get/pt-query-digest
cp /usr/local/src/pt-query-digest /usr/bin
chmod +x /usr/bin/pt-query-digest

2. 配置自动切割mysql慢日志

2.1 复制自动切割的脚本

cp /usr/local/mysql/support-files/mysql-log-rotate /etc/logrotate.d/
ls -al /etc/logrotate.d/mysql-log-rotate

2.2 编辑mysql-log-rotate的内容如下

/data/mysqldata/data28002/mysql_slow.log {
    compress
    create 666 mysql mysql
    dateext
    missingok
    notifempty
    sharedscripts
    postrotate
       /usr/local/mysql/bin/mysql -uroot -pROOTPASSWD -S /tmp/mysql28002.sock -e 'select @@global.long_query_time into @lqt_save; set global long_query_time=2000; select sleep(2); FLUSH LOGS; select sleep(2); set global long_query_time=@lqt_save;'
    endscript
    rotate 150
}

2.3 限制ROOT读写权限

chmod 700 /etc/logrotate.d/mysql-log-rotate
ls -al /etc/logrotate.d/mysql-log-rotate

3. 配置自动分析慢日志

3.1 创建所需目录

mkdir -p  /data/soft/cron/mysqlslowlog/reports
mkdir -p  /data/soft/cron/mysqlslowlog/backup

3.2 新建日志分析脚本

vim /data/soft/cron/mysqlslowlog/analyze-slow-log.sh

#!/bin/sh

DD=`date -d today +"%Y%m%d"`

zcat /data/mysqldata/data28002/mysql_slow.log-$DD.gz | /usr/bin/pt-query-digest --order-by Query_time:max --report-all --limit 100%:50 > /data/soft/cron/mysqlslowlog/reports/28002report-$DD.log

chmod 644 /data/soft/cron/mysqlslowlog/reports/28002report-$DD.log
mv /data/mysqldata/data28002/mysql_slow.log-$DD.gz /data/soft/cron/mysqlslowlog/backup/
chown -R appadmin:appadmin /data/soft/cron/mysqlslowlog/backup/*
chown -R appadmin:appadmin /data/soft/cron/mysqlslowlog/reports/*

3.3 修改脚本的权限

chmod 700  /data/soft/cron/mysqlslowlog/analyze-slow-log.sh
ls -al /data/soft/cron/mysqlslowlog/analyze-slow-log.sh

4. 创建定时任务

crontal -e

#slice mysql-slow-log
50 4 * * * /usr/sbin/logrotate -f /etc/logrotate.d/mysql-log-rotate
#mysql-slow-log analyze
50 5 * * * /bin/sh /data/soft/cron/mysqlslowlog/analyze-slow-log.sh

备注
在执行日志分析脚本的时候可能会出现如下错误:

Can't locate Time/HiRes.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/bin/pt-query-digest line 3225.
BEGIN failed--compilation aborted at /usr/bin/pt-query-digest line 3225.

解决的办法就是安装确实的包

yum -y  install perl-Time-HiRes

最后在对应的目录下会有慢日志分析报告生成:

日志分析报告

相关文章

  • 查询截取分析与优化

    分析步骤: 慢查询日志与捕获 explain+慢查询日志分析 show profile查询sql在mysql服务器...

  • mysql查询优化

    慢日志 配置 永久生效 vim /etc/mysql/my.cnf 慢日志分析 用show profile进行sq...

  • Mysql 慢查询日志

    Mysql 慢查询日志 慢查询日志 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中...

  • mysql查询优化 - 慢查询

    mysql查询速度优化思路 开启慢查询日志 查看导致阻塞的sql语句 重现场景, 单独测试 mysql 慢查询分析...

  • MySQL慢查询日志总结

    MySQL慢查询日志总结 慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MyS...

  • MySQL慢查询日志如何开启以及分析

    1、MySQL慢查询日志是什么 (1)MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录MySQL中...

  • MySQL慢日志分析

    这里借助 percona的pt-query-digest工具对mysql的慢日志做分析,这里使用mysql5.5做...

  • Mysql 慢查询日志配置

    慢查询日志 一、简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更...

  • 慢查询日志

    1、慢查询日志介绍 慢查询日志是什么? 1.MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在My...

  • Mysql慢日志分析

    1,慢日志配置 1)my.cnf文件long_query_time = 0.5 //执行时间超过0.5s的sql...

网友评论

      本文标题:MySQL慢日志分析

      本文链接:https://www.haomeiwen.com/subject/cngdyctx.html