共计 935 个字符,预计需要花费 3 分钟才能阅读完成。
最近会比较多的分析 MySQL 的慢日志,应为在 mysql 的慢日志中没有使用 logrotate 所以每次要要查看某一天到现在的慢查询日志都要使用正则工具切割,但是每次重新写就有一点麻烦,所以就用脚本写了下输入时间参数就可以切割日志的简易工具,脚本如下:
#!/bin/bash
#slow_log_cutting.sh version1.0 chmod 700
#use fast cutting mysql_slow_log
#writer jim
#history
#2017.02.06
# 慢日志文件的路径
slow_query_log_file=$(mysql -Bse “show GLOBAL VARIABLES like ‘slow_query_log_file’;” | awk ‘{print $2}’)
# 输出切割日志用的输出文件夹
if [! -e “$outputdir”];then
mkdir -p “$outputdir”
fi
# 参数判断
if [$# -lt 1];then
echo “ 请输入需要截取的时间 ”
echo “ex> $0 args1(日志中的时间戳)”
exit 0
fi
if [$# -gt 1]; then
echo “ 输入的参数太多了 ”
echo “ex> $0 args1(日志中的时间戳)”
exit 0
fi
time=$1
# 开始日志切割,这里利用了 grep - n 打印某一个日期第一次出现的行,再用 sed 处理
declare -i tmp_rows=$(cat $slow_query_log_file | grep -n “# Time: $time” | awk ‘BEGIN {FS=”:”} NR==1{print $1}’)
declare -i rows=$(($tmp_rows – 1))
cat $slow_query_log_file | sed “1,${rows}d” > $outputdir/localhost-slow.log
这样处理过的输出日志就可以通过 mysqldumpslow 分析切割后的日志进行分析,不过这个脚本有点缺点就是没有对输入的参数进行正则匹配,不过在一般情况下输入正确的时间戳,这样基本就够用了
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/140282.htm