重新启动Redis副本

时间:2018-02-07 23:16:50

标签: redis persistence restart master-slave

我正在使用具有2级主/从模式的redis,没有集群或标记。基本上,我有A - > B - > C,其中A是主要主设备,B从A复制,C从B复制.B和C都是多个实例。现在我需要重新启动所有实例,以便在不停机的情况下为操作系统执行一些安全补丁。根据官方Redis文档,重新启动主服务器将清除从服务器中的所有数据,这在我们的案例中是不可接受的。我试图找到一个解决方案,可以重新启动A和B而不擦除C上的数据。我的暂定是将所有数据转储到rdb文件并重新启动A.但是,这可能仍会引入一些停机时间,因为B和C将尝试重新同步当它加载回rdb文件时,它们的数据是A.我想到的另一种方法是在重新启动主服务器时关闭从服务器的复制,然后逐个重新启动服务器。但是,这需要大量手动操作才能执行重启。有没有更好的方法可以在没有停机的情况下执行此更新?

一个相关的问题是如何配置系统以便将来能够轻松地重新启动这种类型?我可以在所有实例上启用持久性吗?如果启用了持久性的从属。重启后会发生什么?是否会在重新启动时加载本地rdb文件或执行完全同步。

1 个答案:

答案 0 :(得分:1)

  

根据官方Redis文档,重新启动主服务器将清除从服务器中的所有数据,这在我们的案例中是不可接受的。

我不确定你所指的文档的哪一部分,但在任何情况下都不是这样 - 这一切都取决于你是如何做到的。在您的情况下,我使用如下的工作流程来保持服务并以滚动方式修补它:

  1. 提升B为主导
  2. 重新启动A,将其从属于C
  3. 提升C为主导
  4. 重启B,将其从属于A
  5. 促进A成为掌握
  6. 重启C,奴隶吧B