1. 程式人生 > >mysql 第三十五篇文章~xtarbackup增量備份以及策略

mysql 第三十五篇文章~xtarbackup增量備份以及策略

判斷 config 服務器 dir 難度 修改 初始 一周 -a

一 簡介: 今天咱們來探討下增量備份的策略

二 背景: 隨著數據量的日益增長,全備已經不現實了,所以探討並測試了增量備份策略

三 具體策略: 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

七 差不多就這樣了,有問題留言

mysql 第三十五篇文章~xtarbackup增量備份以及策略