#!/usr/bin
#设置数据库连接
conn='mysql -hhost -Pport -uusername -ppassword'
#获取最新的binlog文件
logfile=$($conn -e "show master logs" | tail -n 1 | awk -F" " '{print $1}')
#设置a为1,用户下边的判断
a=1
#while循环
while true
do
#获取起始datetime
fromDate=$(date "+%Y-%m-%d %H:%M:%S")
#获取结束datetime
toDate=$(date "+%Y-%m-%d %H:%M:%S" -d'+1 second' )
echo "toDate is",$toDate
echo "a is"$a
#设置tempDate的值
if [ $a -eq 1 ]; then
tempDate=$fromDate
else
tempDate=$tmpDate
fi
echo "start time is "$tempDate
echo "stop time is ",$toDate
#解析binlog,并追加到文件中
mysqlbinlog -R -hhost -Pport -uusername -ppassword --start-datetime="$tempDate" --stop-datetime="$toDate" $logfile | grep -v "[#|/*!*/;|BEGIN|COMMIT|]" >> content.txt
#重新设置a的值
a=2
tmpDate=$toDate
echo "current log file is "$logfile
done
然后tailf content.txt,即可实时观察binlog的输出。
注:因为会追加content.txt的内容,所以可以设置一个定时任务,定期处理content.txt文件,防止文件增长过大