1

我们正在尝试将我们的 redis/sentinel 集群从 2.8 升级到 3.2。升级将在交通繁忙的情况下进行。我们不能接受任何停机时间。

我们的设置有 6 个 redis/sentinel(3 个站点,每个站点上有 2 台服务器,每个服务器都有一个 redis 实例和正在运行的哨兵)。显然我们有 1 个 master 和 5 个 slave。我们计划一个一个地升级我们的服务器,让我们的主服务器作为最后一个升级。

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

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

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

4

1 回答 1

0

我不建议保留 2.8 节点作为后备。就像您提到的那样,您无法同步 3.2 -> 2.8,因此退回到 2.8 将意味着对 3.2 的所有写入都将丢失。

我建议设置一个运行 3.2 的登台环境,并在那里进行您需要做的任何测试。一旦您对此感到相对自信,请备份您的生产数据库并完成迁移过程。

于 2016-12-02T19:36:49.717 回答