概述: 最近想查找某天的mysql慢日志大于指定执行时间的执行语句, 于是用下面的方式来实现。 前提是我们已经将mysql的慢日志按日期划分了。 主要是实现需求,草率的这么用了。
直接上现在简单的脚本:
#more slowlog.sh
#!/bin/bash
_dir=/data01/var/lib/mysql
_date=$1
cat /dev/null > /tmp/slowlog.$_date
TLIST=$(cat $_dir/mysql-slave-slow.log.$_date | grep Query_time: | awk '{if($3>1.5)print $3}')
for TNAME in $TLIST
do
echo $TNAME
sleep 1
cat $_dir/mysql-slave-slow.log.$_date | grep $TNAME -A 10 >> /tmp/slowlog.$_date
done
说明:
1、其中1.5是执行时间超过1.5S的执行语句;
2、目录下已经将每天的慢日志分割过了指定的文件格式;
3、执行方式 bash slowlog.sh 2022-03-01 ,即可取出这天的慢日志大于执行时间1.5S的语句了。
附上:每天自动切mysql慢日志文件的方式 。
# more 1.sh
#!/bin/bash
time=`date +"%Y-%m-%d"`
_dir=/data01/var/lib/mysql
user="root"
passwd="12346789"
mysql -u$user -p$passwd -e "set global slow_query_log_file='$_dir/mysql-slave-slow.log.$time';"
说明:格式是满足查找慢日志的需求的,我们放入crontab中,每天准时执行即可。
说明:格式是满足查找慢日志的需求的,我们放入crontab中,每天准时执行即可。

