mysql增量備份腳本
#!/bin/bash
dateDIR=$(date -d "yesterday" +"%y-%m-%d")
mkdir -p /data/backup/mysql/binlog/$dateDIR
##刷新緩存中的日誌
mysqladmin -uroot -p flush-logs
#7天前的時間
TIME=$(date "-d 7 day ago" +"%Y-%m-%d %H:%M:%S")
#24小時前的時間
StartTime=$(date "-d 1 day ago" +"%Y-%m-%d %H:%M:%S")
#刪除7天前的2進制文件
mysql -uroot -p -e "purge master logs before '${TIME}';"
#針對每個數據庫
for db in $(mysql -uroot -p -e "show databases" | grep -e "zabbixdatabases" -e"serverdatabases")
do
#針對所有的日誌文件
for log in $(cat /var/lib/mysql/mysql-bin.index)
do
#備份每個數據庫24小時之前到現在時間的所有日誌,寫入到相應文件中
mysqlbinlog -uroot -p -d $db --start-datetime="$StartTime" ${log} > /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}.sql
done
#tar jcvf /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}.tar.bz2 /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR} 2&>/dev/null
#rm -rf /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}
done
#刪除20天以前的增量備份文件和目錄
find /data/backup/mysql/binlog/* -mtime +19 -type d -exec rm -rf {} \;
mysql全備份腳本
1 #!/bin/bash
2
3 date=`date +%Y-%m-%d`
4
5 bakdir="/home/mysqlbackup"
6 mvdir="/home/mysqlbackup/mv"
7 logFile="/home/mysqlbackup/log/mysqlbak.log"
8 user="root"
9 pass="passwd"
10 filename="database-$date.sql"
11 filenamee="databases-$date.sql"
12
13 if [ ! -d $bakdir ];then mkdir -pv $bakdir;fi
14
15 cd $bakdir
16 mv $bakdir/$filename.tgz $mvdir/
17 mv $bakdir/$filenamee $mvdir/
18 rm -f $bakdir/$filename
19
20 /home/mysql/bin/mysqldump --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob --flush-logs --events --single-transaction --quick -B dabases -u$user -p$pass > $filename
21 /home/mysql/bin/mysqldump --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob --flush-logs --events --single-transaction --quick -B databases -u$user -p$pass >
$filenamee 22
23 echo "開始打包備份文件"
24 echo "$filename $filenamee 數據庫備份成功,備份文件在192.168.0.10:/root/home/mysqlbackup目錄下;" > $logFile
25 /bin/tar czvf $filename.tgz $filename
26
27 /bin/find $mvdir -type f -ctime +3 -exec rm -fr {} \;
28 #/bin/tar czvf $filenamee.tgz $filename
29 scp $bakdir/$filename.tgz 192.168.0.10:/root/home/mysqlbackup
30 scp $bakdir/$filenamee 192.168.0.10:/root/home/mysqlbackup
31
32 mv $bakdir/$filename.tgz $mvdir/
33 mv $bakdir/$filenamee $mvdir/
34 rm -f $bakdir/$filename
35
36 ssh 192.168.0.10 '/bin/find /root/home/mysqlbackup -type f -atime +3 -exec rm -fr {} \;'
37 #只保留最近四天的數據
~
或者:
2 # Program
3 # # use mysqldump to Fully backup mysql data per week!
4 # # History
5 # # 2015-04-02 jin first
6 # # path
7 # # ....
8 # 備份文集的目錄,日誌目錄,時間,用戶,密碼
9 BakDir="/root/djback/backup"
10 LogFile="/root/djback/backup/bak.log"
11 Date=`date +%Y%m%d`
12 Begin=`date +"%Y年%m月%d日 %H:%M:%S"`
13 user="root"
14 pass="passwd"
15 #如果文件不存在就創建
16 if [ ! -d $BakDir ];then mkdir -pv $BakDir;fi
17 cd $BakDir
18 #備份文件名字和壓塑後的問件名
19 DumpFile=data-$Date.sql
20 GZDumpFile=data-$Date.sql.tgz
21 DumpFilee=databa-$Date.sql
22 GZDumpFilee=databa-$Date.sql.tgz
23 #備份qiv庫
24 /home/mysql/bin/mysqldump --default-character-set=utf8 --opt --extended-insert=false --master-data=2 --triggers -R --hex-blob --flush-logs --events --single-transaction --quick -B data -u$user -p
$pass > $BakDir/$DumpFile 25 #備份qiv_secretcode庫
26 /home/mysql/bin/mysqldump --default-character-set=utf8 --opt --extended-insert=false --master-data=2 --triggers -R --hex-blob --flush-logs --events --single-transaction --quick -B databa
e -u$user -p$pass > $BakDir/$DumpFilee 27 sed -n "22p" $BakDir/$DumpFilee | awk -F'=|,|;' '{print $2,$4}' >$BakDir/postion
28 # 壓縮備份文件
29 /bin/tar czvf $GZDumpFile $DumpFile
30
31 /bin/tar czvf $GZDumpFilee $DumpFilee
32 # 刪除以前的備份文件
33 /bin/rm $DumpFile
34 Last=`date +"%Y年%m月%d日 %H:%M:%S"`
35 echo "開始:$Begin 結束:$Last $GZDumpFile succ
36 sleep 2
37 echo "(備份成功 備份的目錄爲/root/djback/backup下)"
38 cd $BakDir/daily
39 rm -f *
40 echo "開始上傳文件到192.168.0.10的/root/home/mysqlbackup/下"
41 scp /root/djback/$DumpFile 192.168.0.10:/root/home/mysqlbackup/
42 scp /root/djback/$DumpFilee 192.168.0.10:/root/home/mysqlbackup/
43 echo "上傳成功!"
MySQL完全備份+增量備份
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.