线上最好的办法是一天一个慢日志,便于管理
切割日志
想着分析一下慢日志,可是一看慢日志都好几G了,而且是短日志格式,找到那个时间点相对比较难。于是写了一个脚本从慢日志按时间提取点日志。脚本:
- #!/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" -
/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 {} \;
切割日志
- #!/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了,而且是短日志格式,找到那个时间点相对比较难。于是写了一个脚本从慢日志按时间提取点日志。脚本:
- https://github.com/wubx/mysql-binlog-statistic/blob/master/bin/cutlogbytime
- 时间需要写时戳
- 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)
-
- ./cutlogbytime /path/slowlogfile 1365091200 1365177600 > 20130405_slow.log
这样得到一天的日志文件就小一点的也容易分析了。而且可以根据天的文件,在取一天的某个时间点的日志。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-2059657/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29096438/viewspace-2059657/