Mysql數(shù)據(jù)庫增量備份的思路和方法
MySQL數(shù)據(jù)庫增量備份,在這之前修改我們的數(shù)據(jù)庫配置文件/etc/my.cnf開啟bin-log日志功能即可。接下來是我參考了下網(wǎng)上的一些方法,自己寫的,主要還是要能學到他的一些思路和方法。
#function:MYSQL增量備份
#version:1.0.0
#author:wangyanlin
#date:2017/08/02
#-----------------------------------------------------------------------------------------------
#!/bin/sh
export LANG=en_US.UTF-8
#設置時間
DATE=`date +%Y%m%d`
#設置信息
USER=root
PASSWORD=withub
#設置路徑
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/mysql-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循環(huán)用于比對$Counter,$NextNum這兩個值來確定文件是不是存在或最新的。
for file in `cat $BinlogFile`
do
base=`basename $file`
#basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./
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
添加計劃任務:
crontab -e
00 03 * * * /root/MySQL_incrementbak.sh #每天的凌晨3點開始增量備份日
logs日志打印出來的效果:

PS:下面看下mysql全量和增量備份腳本
全量:
[root@master leo]# cat DBfullBak.sh #!/bin/bash #use mysqldump to fully backup mysql data BakDir=/root/leo/full LogFile=/root/leo/full/bak.log Date=`date +%Y%m%d` Begin=`date +"%Y年%m月%d日 %H:%M:%S"` cd $BakDir DumpFile=$Date.sql GZDumpFile=$Date.sql.tgz mysqldump -uroot -p123456 --all-databases --lock-all-tables --routines --triggers --events --master-data=2 --flush-logs > $DumpFile tar zcvf $GZDumpFile $DumpFile rm $DumpFile Last=`date +"%Y年%m月%d日 %H:%M:%S"` echo 開始:$Begin 結束:$Last $GZDumpFile succ >> $LogFile
參數(shù)注釋:
--all-databases #備份所有庫 --lock-all-tables #為所有表加讀鎖 --routinge #存儲過程與函數(shù) --triggers #觸發(fā)器 --events #記錄事件 --master-data=2 #在備份文件中記錄當前二進制日志的位置,并且為注釋的,1是不注釋掉在主從復制中才有意義 --flush-logs #日志滾動一次
結果如下:
[root@master full]# ls 20140728.sql.tgz bak.log [root@master full]# cat bak.log 開始:2014年07月28日 19:02:59 結束:2014年07月28日 19:02:59 20140728.sql.tgz succ 開始:2014年07月28日 19:12:01 結束:2014年07月28日 19:12:01 20140728.sql.tgz succ [root@master full]#
增量備份:
[root@master leo]# cat DBDailyBak.sh
#!/bin/bash
BakDir=/root/leo/binlog/
BinDir=/var/lib/mysql
LogFile=/root/leo/binlog/bak.log
BinFile=/var/lib/mysql/mysql-bin.index
mysqladmin -uroot -p123456 flush-logs
Counter=`wc -l $BinFile|awk '{print $1}'`
NextNum=0
for file in `cat $BinFile`
do
base=`basename $file`
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $Counter ]
then
echo $base skip! >> $LogFile
else
dest=$BakDir/$base
if(test -e $dest)
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"` $Next Bakup succ~ >> $LogFile
總結
以上所述是小編給大家介紹的Mysql數(shù)據(jù)庫增量備份的思路和方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- MySQL數(shù)據(jù)庫定時備份的實現(xiàn)方法
- mysql數(shù)據(jù)庫太大了如何備份與還原
- 8種手動和自動備份MySQL數(shù)據(jù)庫的方法
- ThinkPHP框架實現(xiàn)的MySQL數(shù)據(jù)庫備份功能示例
- Navicat for MySQL定時備份數(shù)據(jù)庫及數(shù)據(jù)恢復詳解
- linux實現(xiàn)mysql數(shù)據(jù)庫每天自動備份定時備份
- MySQL數(shù)據(jù)庫的shell腳本自動備份
- MySQL數(shù)據(jù)庫如何導入導出(備份還原)
- Mysql備份多個數(shù)據(jù)庫代碼實例
相關文章
使用Python的Django框架中的壓縮組件Django Compressor
這篇文章主要介紹了使用Python的Django框架中的壓縮組件Django Compressor,這個工具主要用于實現(xiàn)js/css的壓縮,需要的朋友可以參考下2015-05-05
Win 8或以上系統(tǒng)下MySQL最新版5.7.17(64bit ZIP綠色版)安裝部署教程
這篇文章主要為大家詳細介紹了Win 8或以上系統(tǒng)下MySQL最新版5.7.17 64bit ZIP綠色版安裝部署教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
Windows系統(tǒng)下MySQL無法啟動的萬能解決方法
這篇文章主要給大家介紹了關于Windows系統(tǒng)下MySQL無法啟動的萬能解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12

