【发布时间】:2016-03-13 09:04:51
【问题描述】:
假设我有 [Slave IP Address],它是 [Master IP Address] 的从属设备。
现在我的主服务器已经关闭,我需要手动将此从服务器设置为主服务器(不使用哨兵自动故障转移,使用 redis 命令)。
是否可以在不重新启动 redis 服务的情况下执行此操作? (并丢失所有缓存的数据)
【问题讨论】:
标签: redis
假设我有 [Slave IP Address],它是 [Master IP Address] 的从属设备。
现在我的主服务器已经关闭,我需要手动将此从服务器设置为主服务器(不使用哨兵自动故障转移,使用 redis 命令)。
是否可以在不重新启动 redis 服务的情况下执行此操作? (并丢失所有缓存的数据)
【问题讨论】:
标签: redis
使用SLAVEOF NO ONE 将奴隶提升为主人
【讨论】:
这取决于,如果您在集群中,则使用故障转移会更好。您将需要在命令中使用 force 选项
【讨论】:
是否可以在不重新启动redis服务的情况下这样做? (和 丢失所有缓存数据)
是的,这是可能的,您可以使用SLAVEOF NO ONE(没有标记)
但建议使用sentinel,避免数据丢失。sentinel failover master-name(with sentinel)
这将强制哨兵切换主人。
新主机将拥有旧主机关闭之前同步的所有数据。
Redis 会自动选择最大的最佳从站。数据,这将减少我们在切换 master 时丢失的数据量。
【讨论】:
sentinel failover master-name 必须在 Sentinel 命令提示符下运行
第 3 步中的以下 2 个选项帮助我在主节点关闭、计算被替换或其他不可恢复状态后恢复集群。
cluster nodes 来验证主节点是否在fail state,同时运行cluster info 来查看集群的整体状态(这总是一个好主意)
cluster failover,
在极少数情况下,当 redis 存在一些严重问题时
命令可能会失败,您需要使用cluster failover force
或cluster failover takeover,这里有更多关于含义的信息
这些选项中:https://redis.io/commands/cluster-failover
cluster forged $old_master_id
cluster meet $new_node_IP $new_node_PORT 添加一个新节点
cluster replicate $master_node_id
从-主升级需要步骤 1-3,并且需要 4-5 使所有集群保持健康的主从平衡。
【讨论】: