ITPub博客

首页 > 数据库 > MySQL > 【Mysql】一天一个慢日志

【Mysql】一天一个慢日志

原创 MySQL 作者:小亮520cl 时间:2016-03-18 17:47:41 0 删除 编辑
线上最好的办法是一天一个慢日志,便于管理
  1. #!/bin/bash
    log_dir='/home/wwwlogs/mysql_slow'
    test -d  $log_dir
    if [ $? != 0 ];then
    mkdir -p $log_dir
    fi
    FILE=`date --date '1 days ago' +%Y%m%d`
    filename=`date --date '15 days ago' +%Y%m%d`


    /usr/bin/mysql -uroot -p'ppppppp' -h127.0.0.1 -e "set global slow_query_log = off;"
    mv /home/mysql/slow.log $log_dir/slow_log."$FILE"

  2. /usr/bin/mysql -uroot -p'ppppppp' -h127.0.0.1 -e "set global slow_query_log= on;"
    find $log_dir -name "*"$filename"*" -exec rm -f {} \;


切割日志
  1. #!/usr/bin/bash
    fulldate=`date +%Y%m%d --date="-1 day"`
    echo $fulldate
    halfdate=`date +%y%m%d --date="-1 day"`
    echo $halfdate


    more /home/data/mydata/3307/mysql-slow.log|grep -A 4 "Time: $halfdate">/soft/day_slowlog/3307/slow_log.$fulldate
    more /home/data/mydata/3308/mysql-slow.log|grep -A 4 "Time: $halfdate">/soft/day_slowlog/3308/slow_log.$fulldate



想着分析一下慢日志,可是一看慢日志都好几G了,而且是短日志格式,找到那个时间点相对比较难。于是写了一个脚本从慢日志按时间提取点日志。脚本:
  1. https://github.com/wubx/mysql-binlog-statistic/blob/master/bin/cutlogbytime
  2. 时间需要写时戳
  3. mysql> select unix_timestamp('2013-04-05');
    +------------------------------+
    | unix_timestamp('2013-04-05') |
    +------------------------------+
    | 1365091200 |
    +------------------------------+
    1 row in set (0.00 sec)


    mysql> select unix_timestamp('2013-04-06');
    +------------------------------+
    | unix_timestamp('2013-04-06') |
    +------------------------------+
    | 1365177600 |
    +------------------------------+
    1 row in set (0.00 sec)


  4. ./cutlogbytime /path/slowlogfile 1365091200 1365177600 > 20130405_slow.log
这样得到一天的日志文件就小一点的也容易分析了。而且可以根据天的文件,在取一天的某个时间点的日志。



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-2059657/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
毕业以后专业任职数据库工程师职位,itpub一直作为自己的笔记记录的地方,blog写的不详细,草书笔记,仅供参考!

注册时间:2013-09-12

  • 博文量
    530
  • 访问量
    971141