redis cluster集群定时备份

发布时间:2023年12月20日

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 {} \;

文章来源:https://blog.csdn.net/aaronmer/article/details/135081107
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。