我们正在尝试将我们的 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?