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文件,防止文件增长过大
posted @ 2014-07-22 21:25  liuweiqiang2v  阅读(834)  评论(0编辑  收藏  举报