redis cluster集群定时备份
2023-12-20 11:43:41
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!