redis集群持久化数据重启恢复 博客分类: redis redis
程序员文章站
2024-03-17 13:00:16
...
网上已有很多关于redis的集群部署方案的文章,这里就直接忽略了。
目前考虑redis集群宕机后,如果有数据是持久化了的,那么重启的时候如何恢复呢?
网上给的答案都是使用dump.rdb或者aof方案来实现
修改redis_*.conf配置文件,屏蔽aof方案的持久化方式
修改redis_*.conf配置文件,设置dump方式备份文件名称,每个节点文件不能相同,否则会覆盖
使用以上文件重启redis cluster时会明确提示启动失败:
根据以上内容再次排查发现,给的方案普遍是删除相关文件,但是这样就无法实现题目中的目的。
[最终] 通过对redis-cli --cluster 的不同命令进行尝试,发现需要对每个节点进行check就可以恢复集群模式,不需要用create来重新构建集群。因为create和add-node都需要保证节点数据为空【以下方式正常情况是无需操作的,直接启动对应端口的服务即可,因为node_2000.conf已生成】
以下是centos下的redis无数据启动和持久化重启脚本
redis_clear_restart.sh
redis_dump_restart.sh
不确定该方法在生产环境上是否存在缺陷或者有效?【本内容为原创,转载请注明出处】
目前考虑redis集群宕机后,如果有数据是持久化了的,那么重启的时候如何恢复呢?
网上给的答案都是使用dump.rdb或者aof方案来实现
# AOF and RDB persistence can be enabled at the same time without problems. # If the AOF is enabled on startup Redis will load the AOF, that is the file # with the better durability guarantees. appendonly no
# The filename where to dump the DB dbfilename "dump_20000.rdb"
使用以上文件重启redis cluster时会明确提示启动失败:
[ERR] Node 127.0.0.1:20000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
根据以上内容再次排查发现,给的方案普遍是删除相关文件,但是这样就无法实现题目中的目的。
[最终] 通过对redis-cli --cluster 的不同命令进行尝试,发现需要对每个节点进行check就可以恢复集群模式,不需要用create来重新构建集群。因为create和add-node都需要保证节点数据为空【以下方式正常情况是无需操作的,直接启动对应端口的服务即可,因为node_2000.conf已生成】
redis-cli --cluster check 127.0.0.1:20000 redis-cli --cluster check 127.0.0.1:20001 redis-cli --cluster check 127.0.0.1:20002 redis-cli --cluster check 127.0.0.1:20003 redis-cli --cluster check 127.0.0.1:20004 redis-cli --cluster check 127.0.0.1:20005
以下是centos下的redis无数据启动和持久化重启脚本
for p in `ps -ef|grep /usr/local/bin/redis-server | awk '{print $2"_"$3}'` do a=`echo $p |awk -F _ '{print $1}'` b=`echo $p |awk -F _ '{print $2}'` if [ $b == "1" ]; then echo "kill -9 $a `kill -9 $a` " fi done echo "rm -rf appendonly_*.aof dump_*.rdb nodes-2000*.conf" rm -rf appendonly_*.aof dump_*.rdb nodes-2000*.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20000.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20001.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20002.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20003.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20004.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20005.conf /usr/local/bin/redis-cli -a 123456 --cluster create --cluster-replicas 1 127.0.0.1:20000 127.0.0.1:20001 127.0.0.1:20002 127.0.0.1:20003 127.0.0.1:20004 127.0.0.1:20005 <<EO F yes EOF
for p in `ps -ef|grep /usr/local/bin/redis-server | awk '{print $2"_"$3}'` do a=`echo $p |awk -F _ '{print $1}'` b=`echo $p |awk -F _ '{print $2}'` if [ $b == "1" ]; then echo "kill -9 $a `kill -9 $a` " fi done echo "rm -rf appendonly_*.aof dump_*.rdb nodes-2000*.conf" rm -rf appendonly_*.aof dump_*.rdb nodes-2000*.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20000.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20001.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20002.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20003.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20004.conf /usr/local/bin/redis-server /home/sysusr/redis/redis-cluster/redis-20005.conf /usr/local/bin/redis-cli -a 123456 --cluster check 127.0.0.1:20000 /usr/local/bin/redis-cli -a 123456 --cluster check 127.0.0.1:20001 /usr/local/bin/redis-cli -a 123456 --cluster check 127.0.0.1:20002 /usr/local/bin/redis-cli -a 123456 --cluster check 127.0.0.1:20003 /usr/local/bin/redis-cli -a 123456 --cluster check 127.0.0.1:20004 /usr/local/bin/redis-cli -a 123456 --cluster check 127.0.0.1:20005
不确定该方法在生产环境上是否存在缺陷或者有效?【本内容为原创,转载请注明出处】
推荐阅读
-
redis集群持久化数据重启恢复 博客分类: redis redis
-
Redis持久化 博客分类: Redis Redis持久化RDBAOF
-
Redis的Cluster集群搭建(几个文章网址) 博客分类: NoSql---Redis redisclusternosql分布式数据库
-
JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步
-
重启redis服务数据丢失的问题(rdb与aof持久化策略)
-
redis专题:redis的持久化方式有哪些?redis数据的备份和恢复策略
-
JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步
-
并发编程之Redis:Redis数据持久化及故障恢复方案