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