percona xtrabackupd定期做全备,增量备份shell脚本

备份策略:

每周日做一全备,每天做一增量备份。

一:全备脚本

cat xtrabackup_full.sh

#!/bin/bash

local_ip="$(/sbin/ifconfig eth0|grep inet addr|awk -F : {print $2}|cut -d -f1)"

email=……

user=root

passwd=……

my_config=/etc/my.cnf

log=$(date +%Y%m%d%H%M).log

str=$(date +%Y%m%d%H%M).tar.gz

backup_dir=/backup/mysql/xtrabackup

source=……

target=……

title=xtrabackup information

MailUser=pingping1990429

MailPassword=……

content1=Server_name:$(hostname) Server_ip:$local_ip $(date +"%y-%m-%d %H:%M:%S") mysql full backup Success!

content2=Server_name:$(hostname) Server_ip:$local_ip $(date +"%y-%m-%d %H:%M:%S") mysql full backup Faild!

echo "Start to backup at $(date +%Y%m%d%H%M)"

if [ ! -d "$backup_dir" ];then

mkdir -p $backup_dir

fi

#innobackupex --defaults-file=$my_config --user=$user --password=$passwd --database=$database --stream=tar $backup_dir 2>$backup_dir/$log | gzip 1>$backup_dir/$str

innobackupex --defaults-file=$my_config --user=$user --password=$passwd $backup_dir

if [ $? -eq 0 ];then

echo "Backup is finish! at $(date +%Y%m%d%H%M)"

echo "Server_name:$(hostname) Server_ip:$local_ip $(date +"%y-%m-%d %H:%M:%S") mysql full backup Success!"

/usr/local/bin/sendEmail -f $source -t $target -s smtp.163.com -u $title -xu $MailUser -xp $MailPassword -m $content1

exit 0

else

echo "Backup is Fail! at $(date +%Y%m%d%H%M)"

echo "Server_name:$(hostname) Server_ip:$local_ip $(date +"%y-%m-%d %H:%M:%S") mysql full backup Fail!"

/usr/local/bin/sendEmail -f $source -t $target -s smtp.163.com -u $title -xu $MailUser -xp $MailPassword -m $content2

exit 1

fi

echo "Backup Process Done"

二:增量备份

[root@single download]# cat xtrabackup_incremental.sh

#!/bin/bash

#增量备份依赖于前一天的备份,所以假如前一天备份失败,后续的也会失败

local_ip="$(/sbin/ifconfig eth0|grep inet addr|awk -F : {print $2}|cut -d -f1)"

email=……

user=root

passwd=……

my_config=/etc/my.cnf

log=$(date +%Y%m%d%H%M).log

str=$(date +%Y%m%d%H%M).tar.gz

backup_dir=/backup/mysql/xtrabackup

source=……

target=……

title=xtrabackup information

MailUser=……

MailPassword=……

content1=Server_name:$(hostname) Server_ip:$local_ip $(date +"%y-%m-%d %H:%M:%S") mysql incremental backup Success!

content2=Server_name:$(hostname) Server_ip:$local_ip $(date +"%y-%m-%d %H:%M:%S") mysql incremental backup Faild!

last_day=$(date -d "1 days ago" +%Y-%m-%d)

today=$(date +%Y%m%d)

filename=$(find $backup_dir -name "$last_day*" -print|awk -F / {print $NF})

echo "Start to backup at $(date +%Y%m%d%H%M)"

if [ ! -d "$backup_dir" ];then

mkdir -p $backup_dir

fi

#innobackupex --defaults-file=$my_config --user=$user --password=$passwd --stream=tar $backup_dir 2>$backup_dir/$log | gzip 1>$backup_dir/$str

innobackupex --defaults-file=$my_config --user=$user --password=$passwd --incremental $backup_dir --incremental-basedir=$backup_dir/$filename

if [ $? -eq 0 ];then

echo "Backup is finish! at $(date +%Y%m%d%H%M)"

echo "Server_name:$(hostname) Server_ip:$local_ip $(date +"%y-%m-%d %H:%M:%S") mysql incremental backup Success!"

/usr/local/bin/sendEmail -f $source -t $target -s smtp.163.com -u $title -xu $MailUser -xp $MailPassword -m $content1

exit 0

else

echo "Backup is Fail! at $(date +%Y%m%d%H%M)"

echo "Server_name:$(hostname) Server_ip:$local_ip $(date +"%y-%m-%d %H:%M:%S") mysql incremental backup Fail!"

/usr/local/bin/sendEmail -f $source -t $target -s smtp.163.com -u $title -xu $MailUser -xp $MailPassword -m $content2

exit 1

fi

echo "Backup Process Done"

三:结合crontab来实现自动备份

0 0 * * 0 /download/xtrabackup_full.sh>> /download/xtrabackup_full.log 2>&1 0 0 * * 1-6 /download/xtrabackup_incremental.sh>>/download/xtrabackup_incremental.log 2>&1

经验分享 程序员 微信小程序 职场和发展