mysql 二進位制日誌增量備份sell指令碼
阿新 • • 發佈:2018-11-21
#function:MySQL增量備份指令碼 #version:1.0.0 #author:leiyuanxin #date:2018/10/26 #----------------------------------- #!/bin/sh exprot LANG=en_US.UTF-8 #設定時間 DATE=`date +%Y%m%d` #設定資訊 USER=root [email protected] #設定路徑 cd / /usr/bin/mkdir -p mysql_bak/daily /usr/bin/mkdir -p mysql_bak/logs BakDir=/mysql_bak/daily BinDir=/var/lib/mysql LogFile=/mysql_bak/logs/Daily_$DATE.log BinlogFile=/var/lib/mysql/relay-bin.index #重新整理日誌 /usr/bin/mysqladmin -u$USER -p$PASSWORD flush-logs Counter=`wc -l $BinlogFile | awk '{print $1}'` NextNum=0 start_time=`date +'%Y-%m-%d %H:%M:%S'` echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next1 Bakup start! >> $LogFile #這個for迴圈用於比對$Counter,$NextNum這兩個值來確定檔案是不是存在或最新的 for file in `cat $BinlogFile` do base=`basename $file` #basename用於擷取relay-bin.00000*檔名,去掉./relay-bin.00000前面的./ NextNum=`expr $NextNum + 1` if [ $NextNum -eq $Counter ] then echo $base skip! >> $LogFile else dest=$BakDir/$base if(test -e $dest) #test -e用於檢測目標檔案是否存在,存在就寫exist!到$LogFile去 then echo $base exist! >> $LogFile else cp $BinDir/$base $BakDir echo $base copying >> $LogFile fi fi done echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next2 Bakup succ! >> $LogFile end_time=`date +'%Y-%m-%d %H:%M:%S'` start_seconds=$(date --date="$start_time" +%s); end_seconds=$(date --date="$end_time" +%s); echo "本次備份執行時間: "$((end_seconds-start_seconds))"s" >> $LogFile