目的是将sql慢日志接入日志系统,让开发人员能看到哪些sql执行慢,目前数据库是基于每天一个慢日志文件的方式,使用了以下的方式进行切换日志文件:
#cat /opt/job/1.sh
#!/bin/bash
time=`date +"%Y-%m-%d"`
_dir=/data/var/lib/mysql
user="root"
passwd="123456"
mysql -u$user -p$passwd -e "set global slow_query_log_file='$_dir/mysql-slave-slow.log.$time';"
然后,将日志格式进行调整,我目前的调整方式类似于以下这样:
最后,将$FILE_C 有用的部分接入日志系统即可。
然后,将日志格式进行调整,我目前的调整方式类似于以下这样:
#more slowlog.sh
#!/bin/bash
_date=`date +%Y-%m-%d`
_date10=`date +%Y-%m-%d -d "-10 days"`
_newlog=/home/slowlog/logs
FILE_A="/usr/local/mysql57/data/test-pp-mysql-slave-slow.log.$_date"
FILE_B="$_newlog/slowlog-loglist.$_date-log.txt"
FILE_C="$_newlog/slowlog-cc01-loglist.$_date-log.txt"
HOME_DIR="/home/slowlog"
LAST_LINE_COUNT_FILE="$HOME_DIR/.last_line_count"
rm -rf $_newlog/slowlog-loglist.$_date10-log.txt
rm -rf $_newlog/slowlog-cc01-loglist.$_date10-log.txt
if [ ! -f "$FILE_A" ]; then
echo "$FILE_A 不存在。"
exit 1
fi
if [ ! -f "$FILE_B" ]; then
echo "$FILE_B 不存在,正在创建..."
touch "$FILE_B"
fi
if [ ! -f "$FILE_C" ]; then
echo "$FILE_C 不存在,正在创建..."
touch "$FILE_C"
fi
initial_line_count=$(wc -l < "$FILE_A")
if [ ! -f "$LAST_LINE_COUNT_FILE" ]; then
echo "$initial_line_count" > "$LAST_LINE_COUNT_FILE"
echo -e "First run , To be add all line!"
tail -n "$initial_line_count" "$FILE_A" >> "$FILE_B"
tail -n "$initial_line_count" "$FILE_A" | awk 'NF' | sed '/# Time:/i\*****************************************' >> "$FILE_C"
exit 1
fi
current_line_count=$(wc -l < "$FILE_A")
last_line_count=$(<"$LAST_LINE_COUNT_FILE")
if [ "$current_line_count" -gt "$last_line_count" ]; then
new_line_count=$((current_line_count - last_line_count))
tail -n "$new_line_count" "$FILE_A" >> "$FILE_B"
tail -n "$new_line_count" "$FILE_A" | awk 'NF' | sed '/# Time:/i\*****************************************' >> "$FILE_C"
echo "已追加 $new_line_count 行到 $FILE_B。"
else
echo "没有新增行。"
fi
echo "$current_line_count" > "$LAST_LINE_COUNT_FILE"
最后,将$FILE_C 有用的部分接入日志系统即可。

