一 简介: 今天咱们来探讨下增量备份的策略
二 背景: 随着数据量的日益增长,全备已经不现实了,所以探讨并测试了增量备份策略
三 具体策略: 1 一周为界限,一天做全备,其他时间以全备为基础进行增量备份
2 一周为界限,进行打包,然后上传到备份服务器
四 具体脚本:
第一部分 参数变量初始化
#!/bin/bash
#config
xingqi=`date +%w`
DATE=`date +%Y%m%d%H`
DATEyst=`date +"%Y%m%d%H" -d "-24hour"`
DISKSIZE=`df -h|grep ‘9[0-9]%‘`
dirname="/backup/database"
IP=`/sbin/ifconfig eth0 | grep ‘inet addr‘ | cut -d: -f2 | awk ‘{ print $1}‘|cut -d‘.‘ -f 3,4`
user="aaa"
password="ccc"
pwd=$dirname
第二部分 全备
function fullbackup() {
if [ -z "$DISKSIZE" ];then
mkdir -p $pwd
filename1=$DATE"_full_"$IP
innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$password --no-timestamp --socket=/tmp/mysql.sock --slave-info $pwd/$filename1 > /dev/null
sleep 2
else
echo " the disk is full "
fi
第三部分 第一次增量备份
function incrementalbackup(){
filename1=$DATEyst"_full_"$IP
filename2=$DATE"_incremental_"$IP
if [ -z "$DISKSIZE" ];then
innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$password --no-timestamp --socket=/tmp/mysql.sock --slave-info --incremental-basedir=$pwd/$filename1 --incremental $pwd/$filename2 > /dev/null
sleep 2
else
echo "the disk is full "
fi
}
第四部分 第二次增量备份
function incrementalbackup_1(){
filename1=$DATEyst"_incremental_"$IP
filename2=$DATE"_incremental_"$IP
if [ -z "$DISKSIZE" ];then
innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$password --no-timestamp --socket=/tmp/mysql.sock --slave-info --incremental-basedir=$pwd/$filename1 --incremental $pwd/$filename2 > /dev/null
sleep 2
else
echo "the disk is full "
fi
第五部分 统一打包
function tarbackup(){
cd /backup/database
tar -czf $DATEyst.tar.gz fullfile_xtra/
rm -rf database/
}
第六 部分 调用
if [ $xingqi = 2 ];then
tarbackup
fullbackup
elif [ $xingqi = 3 ];then
incrementalbackup
echo "incrementalbackup 1"
elif [ $xingqi =1 ];then
incrementalbackup_1
else
incrementalbackup_1
echo "incrementalbackup n"
fi
五 增量恢复步骤
1 先恢复 全量备份
innobackupex --apply-log --redo-only BASE-DIR
2 恢复增量备份 1
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1
3 恢复增量备份 2
innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2
六 注意点:
备份:
1 备份脚本没有生成时间戳目录,因为有时间戳目录会增大脚本编写难度
2 备份脚本修改一些参数即可使用,是根据星期进行判断执行增量还是全量备份,全量备份前会把上一次的备份全套打包
还原
1 全量恢复+增量恢复 可以灵活进行配合 ,全量恢复是基础 切记
2 选取目标的增量恢复 不能加read-only
七 差不多就这样了,有问题留言