当前位置: 首页 > 知识库问答 >
问题:

Redis master故障转移后的回退

解晟
2023-03-14

我们正在尝试将Redis/Sentinel集群从2.8升级到3.2。升级将在交通繁忙的情况下发生。对我们来说,没有停机时间是可以接受的。

当我们准备升级主服务器时,所有从服务器都将运行在3.2上,并且这些从服务器能够与运行在2.8上的主服务器同步
一旦我们停止主服务器(2.8)或手动请求故障转移,新服务器(3.2)将成为主服务器。

我们希望将旧的master(2.8)保留一段时间,以便在发现新设置的任何问题时能够后退。不幸的是,由于不同的RDB格式,旧的redis(2.8)从服务器无法与新的主服务器(3.2)同步。我们可以停止我们的旧服务器,从服务器(2.8),但我们也希望能够后退到2.8,作为一个主服务器,以防我们发现3.2有问题。由于2.8不能与3.2同步,因此没有任何数据,因此不能被哨兵选为新的主人。

问题是如何在不丢失任何数据的情况下从3.2回落到2.8?

共有1个答案

宋岳
2023-03-14

我不建议保留2.8节点作为备用。正如您所提到的,您不能同步3.2->2.8,因此返回到2.8将意味着对3.2进行的所有写操作都将丢失。

我建议建立一个运行3.2的临时环境,并在那里进行您需要做的任何测试。一旦您对它有了相对的信心,就可以备份您的生产数据库并完成迁移过程。

 类似资料:
  • 我有3个redis Sentinel的盒子设置: 在我的主人死后,哨兵进行了故障转移到R2。我将M1重新联机(清除了一些磁盘空间),现在M1还活着,但是是R2的奴隶。是否有一种自动的(或半自动的)方法,使M1再次成为主,R2再次成为M1和我的流量的从属,使用M1作为主redis实例?

  • 我们使用MQ作为传递消息的主要路径。这是我们的制度运作不可或缺的一部分。消息代理有时会失败,所有相关的队列也会随之失败。在camel中,有没有一种方法可以启动故障切换,并在其启动时恢复到主故障切换?

  • 我正在尝试用6台机器实现一个Redis集群。我有一个由六台机器组成的流浪集群: 运行redis服务器 我编辑了上述所有服务器的/etc/redis/redis.conf文件,添加了这个 然后我在六台机器中的一台上运行了这个程序; Redis集群已启动并运行。我通过在一台机器上设置值手动检查它显示在其他机器上。 我的问题是,当我关闭或停止任何一台主机上的redis server时,整个集群都会停止运

  • 我试图创建一个简单的redis高可用性设置与1主,1从和2哨兵。 当从故障转移到时,该设置工作正常。当恢复时,它将自己正确地注册为新的主服务器的从服务器。 但是,当作为主服务器关闭时, 不能作为主服务器返回。的日志进入循环,显示: 每个复制文档都声明: 自Redis4.0以来,当一个实例在故障转移后被提升为master时,它仍然能够与旧master的从机执行部分重新同步。 但日志似乎显示了另一种情

  • 我安装了墨盒,并将其缩放到3个档位。每个的设置为2。在我将从: 致: 现在,在重新启动墨盒后,它看起来一切正常,直到我杀死主人。奴隶们只是坐在那里数着他们上次看到的几秒钟...他们(其中一个)的日志上写着:

  • 我们有一个mongodb副本集,其中包含两个实例(127.0.0.1:27017-主要,127.0.0.1:27018-次要)和一个仲裁器(127.0.0.1:27019)。当我使用rs.steppdown(60)从主实例中退出时,它应该成为辅助实例,辅助实例应该成为主实例,所有写操作都应该在辅助实例中发生(退出后的主实例)。但在卸任后,我遇到了一个异常“无法将数据写入传输连接:远程主机强制关闭了