Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新启动Redis副本_Redis_Persistence_Restart_Master Slave - Fatal编程技术网

重新启动Redis副本

重新启动Redis副本,redis,persistence,restart,master-slave,Redis,Persistence,Restart,Master Slave,我使用的redis具有2级主/从模式,没有集群或sentinel。基本上,我有A->B->C,其中A是主控,B从A复制,C从B复制。B和C都是多个实例。现在我需要重新启动所有实例,以便在不停机的情况下对操作系统进行一些安全修补。根据Redis官方文档,重新启动主设备将清除从设备中的所有数据,这在我们的情况下是不可接受的。我正在尝试找到一种解决方案,可以在不擦除C上的数据的情况下重新启动a和B。我的尝试是将所有数据转储到rdb文件中,然后重新启动a。但是,这可能会导致一些停机,因为B和C在加载rd

我使用的redis具有2级主/从模式,没有集群或sentinel。基本上,我有A->B->C,其中A是主控,B从A复制,C从B复制。B和C都是多个实例。现在我需要重新启动所有实例,以便在不停机的情况下对操作系统进行一些安全修补。根据Redis官方文档,重新启动主设备将清除从设备中的所有数据,这在我们的情况下是不可接受的。我正在尝试找到一种解决方案,可以在不擦除C上的数据的情况下重新启动a和B。我的尝试是将所有数据转储到rdb文件中,然后重新启动a。但是,这可能会导致一些停机,因为B和C在加载rdb文件时会尝试将其数据与a重新同步。我考虑的另一种方法是在重新启动主服务器时关闭从属服务器的复制,然后逐个重新启动salves。但是,这需要大量的手动工作来执行重新启动。有没有更好的方法可以在不停机的情况下执行此更新

一个相关的问题是如何配置系统,使其能够在将来轻松处理此类重启?我可以在所有实例上启用持久性吗?如果从机已启用持久性。重新启动时会发生什么情况?它将加载本地rdb文件,或者在重新启动时执行完全同步

根据Redis官方文档,重新启动主设备将清除从设备中的所有数据,这在我们的情况下是不可接受的

我不确定你指的是文档的哪一部分,但在任何情况下都不是这样——这完全取决于你如何做。在您的情况下,我会使用如下工作流来保持服务正常运行,并以滚动方式对其进行修补:

  • 提拔B为主人
  • 重新启动A,从它到C
  • 提升C为大师
  • 重新启动B,将其从属到A
  • 晋升为大师
  • 重新启动C,从B

  • 重新启动主机不会擦除从机上的数据。但是当主站出现时,从站(B和C)会再次从主站同步整个DB。但是,如果重新启动主机,从机仍然可以进行读取(如果从机是只读的)。在主机重新启动后,逐个启动从机(我想最好在B之前启动C)应该可以。