您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么根據日期來查詢mysql的binlog日志”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
根據日期來查詢mysql的binlog日志的腳本
[binlog@m-mysql-binlogbak ~]$ cat mysqllog.sh
#!/bin/bash
#本腳本是用來根據日期來查詢mysql的binlog日志
#the author is czxin788@qq.com
read -p "請輸入您要查詢mysql日志的起始日期(格式必須是:170728):" starttime
read -p "請輸入您要查詢mysql日志的截止日期(格式必須是:170728):" endtime
read -p "請輸入您要查詢的內容:" content
echo "-------------------"
echo "正在為您查詢,時間可能會比較長,請您耐心等候....."
echo "開始時間:`date +%Y-%m-%d_%H:%M`"
#獲取binlog的文件名
binname=`ls /opt/mysqlbinlog/ |xargs`
#用for 循環根據開始日期確定要查詢的起始binlog日志文件名
for i in `ls /opt/mysqlbinlog/`
do
mysqlbinlog --base64-output=decode-rows -v -v -v /opt/mysqlbinlog/$i |head -50 |grep `expr $starttime - 1` > /dev/null 2>&1
if [ $? -eq 0 ];then
echo $i > /tmp/startbin.txt
break
fi
done
startbinlog=`cat /tmp/startbin.txt`
fistname=`echo $startbinlog ${binname##*$startbinlog}`
#######
#用for 循環根據截止日期確定要查詢的截止binlog日志文件名
for j in `ls /opt/mysqlbinlog/`
do
mysqlbinlog --base64-output=decode-rows -v -v -v /opt/mysqlbinlog/$j |head -50 |grep `expr $endtime + 1` > /dev/null 2>&1
if [ $? -eq 0 ];then
echo $j > /tmp/endbin.txt
break
fi
done
endbinlog=`cat /tmp/endbin.txt`
lastname=`echo ${fistname%%$endbinlog*} $endbinlog`
#輸出最終要查詢的binlog文件名list
#echo the result name:$lastname
cd /opt/mysqlbinlog/
resultlog=${content}_`date +%m%d%H%M%S`.log
mysqlbinlog --base64-output=decode-rows -v -v -v $lastname |grep -C 200 -i $content > /home/binlog/$resultlog
echo "-------------------"
echo "結束時間:`date +%Y-%m-%d_%H:%M`"
echo "已完成,您要查詢的內容已經放在/home/binlog/$resultlog里面,請執行sz /home/binlog/$resultlog命令下載到自己筆記本上查看!"
[binlog@m-mysql-binlogbak ~]$ sh mysqllog.sh
就可以使用了
“怎么根據日期來查詢mysql的binlog日志”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。