Linux下MySQL双主模式下的增量异地备份和定期删除方案

针对192.168.0.1和192.168.0.2的双主MySQL服务器,为满足不停机、不影响业务的需求,采用xtrabackup进行异地备份。每周一次完整备份,每日一次全备,并在192.168.0.3上保留两周的备份文件。通过crontab定时执行备份和删除过期备份的脚本,确保资源有效利用。
摘要由CSDN通过智能技术生成

有两个服务器,192.168.0.1 和192.168.0.2,采用nginix+双主模式互为双机热备,做高可用。

现在客户额外给了一台异地的服务器192.168.0.3,要求对两台服务器每天自动化的异地备份,要求不能停机,不能影响主业务流程。

思来想去,采用Mysql自身的mysqldump或者mysqlpump都不太可靠,这两种方式即使设置好参数不锁表,也容易造成服务器内存占用高,可能会影响主业务。

两台数据库服务器的数据文件约2T,要想快又稳,不影响用户操作,能找到的好的方案,只有采用xtrabackup了。

xtrabackup可以实现完整备份和增量备份,并且不会影响mysql本身的运行,也不会增加mysql的性能。这方面就不多说了,有兴趣的可以参考percona xtrabackup官网说明。

为了安全便于恢复,整体方案如下,在数据库服务器本机,每周一次完整备份,每天进行一次完整备份,每天都把备份拷到异地服务器。

本地服务器,每天都要滚动删除历史备份,只保留一周。异地备份服务器,每天也定期清除历史备份,保留完整的两周全备份和增量备份文件。

1:数据库服务器备份脚本,在两台双主服务器都添加该脚本

#!/bin/sh

year=`date +%Y`
month=`date +%m`
day=`date +%d`
week=`date +%w`
today=`date +%Y%m%d`
log=$today.log
CODE=$?
backup_dir=/PRODUCT_DB/data/backups
full_backup_dir=/PRODUCT_DB/data/backups/full
inc_backup_dir=/PRODUCT_DB/data/backups/inc
inc_full_backup_dir=$inc_backup_dir/$today
backup_program=/root/xtrabackup/bin/xtrabackup
config_file=/etc/my.cnf
dba_user=root
dba_password=yourDbPassword
backup_server=192.168.0.3
backup_server_user=root
#在主服务器1上是1,2上则是2
backup_server_fullbackupdir=/UNI/data/backups/1/full
backup_server_incbackupdir=/UNI/data/backups/1/inc
execute_full_backup=0
execute_inc_backup=0

echo "today is:$today"
echo "week day is:$week"
echo "full backup dir is:$backup_dir/full"
echo "incremental backup dir is:$backup_dir/inc/$today"

   del_date=`date -d '8 days ago' +%Y%m%d`
   echo 'del date is:' $del_date
   endDate=`date -d "${del_date}" +%s`
   echo 'endDate is:' $endDate

make_full_bak_dir(){
#创建完整备份的目录
if [ ! -d $backup_dir/full ];then
    echo "full backup dir:$backup_dir/full is not exist,begin create the directory... "
    mkdir -p $backup_dir/full
    echo "full backup dir created succeed!"
fi
}

make_inc_bak_dir(){
#创建增量备份的目录
if [ ! -d $backup_dir/inc ];then
    echo "incremental backup dir:$backup_dir/inc/$today is not exist,begin create the directory... "
    mkdir -p $backup_dir/inc/$today
    echo "incremental backup dir created succeed!"
fi
}

full_backup(){
#每当week=6时进行完整备份
  echo "function full_backup"
if [ "$week" -eq "6" ];then
  echo "begin full backup"
  echo "full backup dir is:$full_backup_dir"
  echo "it will take a lot of times,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值