數據庫備份策略


數據庫備份策略

每周的周日進行一次全備;周一到周六每天做上一天增量,每周輪詢一次。 
備份方案: xtrabackup全備+增量

備份策略(crontab):

crontab -e

00 03 1 /root/allbak.sh &>/dev/null //每周一的凌晨3點執行完全備份

vim /root/allbak.sh  
#!/bin/bash  
[ ! -e /backup ]&& mkdir /backup #新建個文件夾專門放備份文件的  
day=date +%F #定義日期是時間  
user=root  
pass=123456  
innobackupex --user $user --password $pass /backup/allbak${day} --no-timestamp 
#用innobackupex做完全備份  
mysql -u$user -p$pass -e "flush logs"  
#啟用binlog日志,每次完全備份之后,每周刷新一遍binlog日志

 

 

00 0 2-7 /root/newbak.sh & >/dev/null //每周二到周7的凌晨3點執行增量備份

#周一全備,如果是周二執行,判斷dir1 存在,則增量備份,如果不存在,則判斷昨天的增量,存在則執行周三的增量,如果都沒有,則全備執行一次吧 

vim /root/newbak.sh  
#!/bin/bash  
d1=date +%F #定義時間,用日期來區分  
d2=date +%F -d "-1 days" #找到昨天的日期,好指明上一次備份的備份文件  
dir1=/backup/allbak${d2} #昨天做的完全備份文件  
dir2=/backup/newbak${d2} #昨天做的增量備份文件  
user=root  
pass=123456  
[ ! -e /backup ]&& mkdir /backup #如果文件不存在,則創建文件夾  
if [ -e ${dir1} ];then #判斷昨天做的是完全備份  Y指定昨天備份的完全備份文件
    innobackupex --user $user --password $pass --incremental /backup/newbak${d1} --incremental-basedir=${dir1} --no-timestamp 
elif [ -e ${dir2} ];then#判斷昨天做的是增量備份  Y指定昨天備份的增量備份文件
    innobackupex --user $user --password $pass --incremental /backup/newbak${d1} --incremental-basedir=${dir2} --no-timestamp 
else  #昨天既沒有做增量備份,又沒有做完全備份,則做一次完全備份。
    innobackupex --user $user --password $pass /backup/allbak${d1} --no-timestamp  
fi

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM