caching - 当先前死掉的redis-master再次在线时如何禁用sentinel auto-slaveof

标签 caching redis high-availability redis-sentinel

有网络分区时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/

相关文章:

windows-services - Windows 服务——高可用场景和设计方法

Redis哨兵故障转移配置问题

css - 相同的样式表在浏览器和存储它的服务器上显示不同

nosql - Redis,分布式还是非分布式?

crontab shell时python运行redis错误

jenkins - 设置 Jenkins HA - 冷备用节点

python - 如何告诉 Django,memcached 运行时项目大小大于默认值?

http - S-maxage和maxage的区别

spring-boot - 当方法抛出异常时缓存逐出行为

ruby - 使用Rails,Redis和HTML5的具有播放列表的音乐播放器的体系结构