redis cluster集群定时备份

4 篇文章 0 订阅

redis cluster集群定时备份

对于redis cluster,为了保证高可用,我们在保证并发能力的情况下,还要保证崩溃情况下恢复的能力,因此需要定时保存数据,以应对意外情况出现,下面提供了一种数据备份的设计方法

主节点采用rdb快照的方式进行备份,备份速度快,减少对主进程的影响
从节点采用aof的形式备份,尽量完整的保存数据
以下是备份脚本,可以通过contab命令定时执行如下脚本进行备份

#!/bin/sh
## 设置redis_home目录
set redis_home=/data/redis/cluster
set redis_bin=$redis_home/bin
set redis_data=$redis_home/data
set redis_backup=$redis_home/backup
set redis_logs=$redis_home/logs
for redis_port in `netstat -nlpt|grep redis|awk -F: '{print $2}'|awk '{print $1}'`
	do
    ## tr -d ‘\r’去掉换行符
    redis_role=`$redis_bin/redis-cli -p $redis_port -a pwd info |grep role|awk -F: '{print $2}'|tr -d '\r'` 
		## 根据redis的角色进行备份
	    case $redis_role in
		master)
		## master开启RDB,通过bgsave命令立即备份
			 $redis_bin/redis-cli -h 127.0.0.1 -p $redis_port -a pwd bgsave
			 ;;
		slave)
		## slave开启AOF持久化,通过bgrewriteaof命令立即备份
			 $redis_bin/redis-cli -h 127.0.0.1 -p $redis_port -a pwd bgrewriteaof
			 ;;
		*)
			 continue
			 ;; 
		esac
	done

sleep 1000

## 按照日期时间格式进行备份
backup_time=`date +"%Y%m%d%H%M%S"`
## 日志记录备份详情
echo "--------------------------$backup_time------------------------------" >>$redis_logs/redis_data_backup.log
## 备份AOF和RDB文件
for redis_data_file in `find $redis_data -name "appendonly.aof" -o -name "dump.rdb"`
do		
     echo "backup redis data file "$redis_data_file >> $redis_logs/redis_data_backup.log
     cp -f $redis_data_file $redis_backup/`basename $redis_data_file`.$backup_time
done

## 按日期删除30天以前的备份数据
cd /data/backup
find . \( -name "appendonly*" -o -name "dump*" \)-mtime +30 -execrm -f {} \;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值