首页 > 代码库 > shell动态解析sql的binlog

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 truedo    #获取起始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 "$logfiledone
然后tailf content.txt,即可实时观察binlog的输出。

注:因为会追加content.txt的内容,所以可以设置一个定时任务,定期处理content.txt文件,防止文件增长过大