网上已有很多关于redis的集群部署方案的文章,这里就直接忽略了。
目前考虑redis集群宕机后,如果有数据是持久化了的,那么重启的时候如何恢复呢?
网上给的答案都是使用dump.rdb或者aof方案来实现
修改redis_*.conf配置文件,屏蔽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
修改redis_*.conf配置文件,设置dump方式备份文件名称,每个节点文件不能相同,否则会覆盖
# 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无数据启动和持久化重启脚本
redis_clear_restart.sh
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
redis_dump_restart.sh
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 提供了两种持久化方式:RDB(Redis Database Backup)和 AOF(Append Only File)。这两种机制各有特点,适用于不同的场景。 ##### 1. RDB...
将配置密码持久化到redis配置文件,redis集群重启密码依然有效。 注:此方式无需重启redis集群服务密码即可生效。 客户端连接配置需要修改为新密码,并将客户端密码进行加密处理,客户端加密方式见第3部分。 2.空...
Redis集群批处理一键搭建是指通过一个简单的批处理脚本来快速构建和配置...通过理解Redis集群的工作原理、数据持久化机制以及批处理脚本的运作方式,可以更好地管理和维护Redis集群,确保服务的稳定性和数据的安全性。
在部署有状态的应用如Redis集群时,需要特别注意网络配置和持久化存储配置。Rancher在这一部分文档中可能会详细说明如何为Redis配置持久化存储卷,比如如何为每个Redis实例指定持久化存储卷(PV)和持久化存储卷声明...
4. **持久化**:提供RDB和AOF两种持久化方式,保证数据在服务器重启后的恢复。 5. **事务**:支持事务操作,保证数据操作的原子性。 **什么是Redis-Cluster** Redis-Cluster是Redis的官方集群解决方案,它将数据...
Redis集群是一种无中心的分布式的多主复制模式,它通过将数据分布在多个Redis节点上来提高性能和可用性。集群中每个节点都保存着一部分数据,并且能够处理客户端请求。当某个节点发生故障时,集群能够自动检测并进行...
- **持久化**:为了防止数据丢失,应启用Redis的RDB或AOF持久化机制,确保在容器重启后数据仍然可用。 - **安全策略**:虽然在开发环境中可能不那么重要,但在生产环境中,应考虑设置访问控制和密码保护。 - **监控...
在本教程中,我们将深入探讨如何在Ubuntu 14.04操作...集成Ambari与Redis集群后,你将能够通过Ambari界面轻松管理Redis服务,包括查看运行状态、监控性能指标、调整配置、执行重启和升级等操作,极大地简化了运维流程。
接着,对配置文件进行修改,包括注释掉本地绑定IP地址、关闭保护模式、设置端口号、启用后台启动、指定PID文件位置、修改持久化文件路径、设定内存优化策略、关闭AOF(Append Only File)模式、开启集群配置以及调整...
AOF日志记录了所有写操作,确保在节点重启后能够恢复数据。在集群环境中,每个节点都需要开启AOF以确保数据一致性。 总之,Redis集群是一种高效且可扩展的解决方案,适用于需要高性能缓存和数据分发的大型网站和...
此外,Redis 提供了 RDB(定期快照)和 AOF(Append-Only File)两种持久化策略,以保证在系统重启后能恢复数据。 8. **Redis 在实际应用中的考量**: 在部署 Redis 集群时,需要考虑网络延迟、数据分布策略、故障...
如果Redis意外关闭,重启时会加载最新的RDB文件来恢复数据。可以通过配置`save`指令来设置触发RDB快照的条件,例如`save 900 1`表示在900秒内如果有至少1个键被修改,就创建快照。 2. AOF(Append Only File)持久...
在重启 Redis 时,可以通过重放 AOF 文件中的写命令来恢复数据。 - **优点**:数据丢失的可能性较小,因为每条写命令都会被记录。 - **缺点**:相比 RDB,AOF 文件占用的磁盘空间更大;恢复速度慢。 #### 四、...
AOF持久化则记录了所有写操作命令,当Redis重启时,会重新执行这些命令来恢复数据。AOF模式下,可以通过`appendonly yes/no`配置来开启或关闭,`appendfsync`参数决定日志同步策略,可选`always`(每次写操作都同步...
本教程将详细介绍如何利用Tomcat 8或9以及Redis实现Session共享,支持Redis集群,以提高系统的可伸缩性和数据一致性。 首先,我们需要理解Session的概念。Session是服务器端用于存储用户状态的一种机制,通常在用户...
Redis是一种高性能的键值对数据存储系统,常用于缓存、数据库和消息中间件等场景...在实际应用中,你可能还需要考虑网络配置、安全性、持久化策略等因素。确保对每个组件都有深入理解,以便于维护和优化你的Redis集群。
在IT行业中,Redis是一个广泛应用的高性能键值存储系统,它支持数据持久化、主从复制、事务、发布订阅等特性。当 Redis 集群运行时出现“master 丢失”的问题,这通常意味着主节点(负责处理写操作的节点)由于某种...
Redis 集群部署是将多个 Redis 服务器组织在一起,形成一个分布式的系统,能够提供高可用性、数据冗余和水平扩展能力。在 Redis 3.0 版本开始,官方正式支持集群功能。以下是对 Redis 集群部署过程的详细说明: 1. ...
AOF是一种日志式的持久化方法,它记录了每个写入操作的命令,并在重启时重新执行这些命令来恢复数据。 ##### 测试AOF - 当客户端向服务器发送Redis命令时,Redis会将这些命令追加到AOF文件中。 - 重启后,Redis会...
它可以在内存中运行,实现快速的读写操作,同时可以通过AOF(Append Only File)或RDB(Snapshot)进行持久化,保证数据在服务器重启后得以恢复。Redis的主从复制功能则用于实现数据的备份和读写分离,提高系统的...