1

有网络分区时我有一个关于redis sentinel的问题

我在server01上启动了一个redis服务器作为master,在server02上启动了一个服务器作为slave,另一台服务器上有一个redis哨兵,我设置了一个脚本让客户端在故障转移时指向新的master。</p>

然后在server01上发生了一个分区,隔离了master,所以sentinel在server02上启动了故障转移,server02的slave成为了新的master。现在所有的客户都在使用新的主人,这没关系。

然而,当分区恢复时,哨兵将发送slaveof给旧主。然后老master会删除所有数据并与新master同步,即使新master和旧master之间没有什么区别。当有多个主从组时,sync命令会占用我生产环境中的所有带宽。

那么如何禁用自动slaveof呢?有更好的主意吗?

4

1 回答 1

0

你想把老主子一起移除吗?如果是这样,那么在它恢复之前发布问题 asentinel reset <podname>并且它(旧主)将从 Sentinel 中删除。当然,那么你不会有新主人的奴隶。

Redis 目前的工作方式是,旧的 master 总是必须与新的 master 完全重新同步才能成为它的 slave。因此,直到 Redis 本身的复制发生变化,只要您想要复制,您就必须接受同步方面。

也就是说,我不确定您所说的“当有多个主从组时......”是什么意思。你能详细说明一下吗?

于 2015-04-22T13:19:26.120 回答