【问题标题】:Redis - Promoting a slave to master manuallyRedis - 手动将奴隶提升为主
【发布时间】:2016-03-13 09:04:51
【问题描述】:

假设我有 [Slave IP Address],它是 [Master IP Address] 的从属设备。

现在我的主服务器已经关闭,我需要手动将此从服务器设置为主服务器(不使用哨兵自动故障转移,使用 redis 命令)。

是否可以在不重新启动 redis 服务的情况下执行此操作? (并丢失所有缓存的数据)

【问题讨论】:

    标签: redis


    【解决方案1】:

    使用SLAVEOF NO ONE 将奴隶提升为主人

    http://redis.io/commands/slaveof

    【讨论】:

      【解决方案2】:

      这取决于,如果您在集群中,则使用故障转移会更好。您将需要在命令中使用 force 选项

      http://redis.io/commands/cluster-failover

      【讨论】:

        【解决方案3】:

        是否可以在不重新启动redis服务的情况下这样做? (和 丢失所有缓存数据)


        是的,这是可能的,您可以使用
        SLAVEOF NO ONE(没有标记)

        但建议使用sentinel,避免数据丢失。
        sentinel failover master-name(with sentinel)
        这将强制哨兵切换主人。
        新主机将拥有旧主机关闭之前同步的所有数据。
        Redis 会自动选择最大的最佳从站。数据,这将减少我们在切换 master 时丢失的数据量。

        【讨论】:

        • sentinel failover master-name 必须在 Sentinel 命令提示符下运行
        【解决方案4】:

        第 3 步中的以下 2 个选项帮助我在主节点关闭、计算被替换或其他不可恢复状态后恢复集群。

        • 1 .- 首先你需要连接到从节点,使用redis-cli,这里有一个链接如何做到这一点:How to connect to remote Redis server?
        • 2 .- 一旦连接到从节点运行命令cluster nodes 来验证主节点是否在fail state,同时运行cluster info 来查看集群的整体状态(这总是一个好主意)
        • 3 .- 在要提升的从节点内部运行命令:cluster failover, 在极少数情况下,当 redis 存在一些严重问题时 命令可能会失败,您需要使用cluster failover force 或cluster failover takeover,这里有更多关于含义的信息 这些选项中:https://redis.io/commands/cluster-failover
        • 4 .- 在所有集群节点中运行 cluster forged $old_master_id
        • 5 .- 使用cluster meet $new_node_IP $new_node_PORT 添加一个新节点
        • 6 .- 将您的新节点订阅到您全新的主节点,登录到新的博德并运行cluster replicate $master_node_id

        从-主升级需要步骤 1-3,并且需要 4-5 使所有集群保持健康的主从平衡。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-12
          • 1970-01-01
          相关资源
          最近更新 更多