有网络分区时redis sentinel的问题
我在 server01 上启动了一个 redis 服务器作为 master,在 server02 上启动了一个服务器作为 slave,在另一台服务器上有一个 redis sentinel,我设置了一个脚本让客户端在故障转移时指向新的 master。
然后在server01上发生分区隔离master,所以sentinel在server02上启动故障转移,server02的slave成为新的master。现在所有的客户端都在使用新的 master,这没问题。
然而,当分区恢复时,sentinel 将发送 slaveof
给旧的 master。老主人会删除所有数据并与新主人同步,即使新主人和旧主人之间没有什么区别。当有多个主从组时,同步命令将占用我生产环境中的所有带宽。
那么如何禁用auto slaveof呢?有更好的主意吗?
最佳答案
你想把老主人一起除掉吗?如果是这样,那么在它恢复之前发出一个 sentinel reset <podname>
它(旧主人)将从哨兵中移除。当然,那样你就不会有新主人的奴隶了。
Redis 目前的工作方式,旧的 master 总是必须与新的 master 进行完全重新同步才能成为它的 slave。因此,在 Redis 本身的复制发生变化之前,只要您想要复制,就必须接受同步方面。
也就是说,我不确定“当有多个主从组时……”是什么意思。你能详细说明一下吗?
关于caching - 当先前死掉的redis-master再次在线时如何禁用sentinel auto-slaveof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29765389/