shell动态解析sql的binlog

#!/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文件,防止文件增长过大

shell动态解析sql的binlog,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。