springbot 使用sentinel哨兵redis时,手动使用sentinel切换主从时,数据丢失

redis 为一主一从,
手动使用sentinel failove切换
程序不会报错,redis数据丢失

手动将主redis杀掉,程序会报错,redis数据不会丢失

问: 手动sentinel切换时,怎样获取异常,redis减少数据丢失数据

如果一个master出现了脑裂,跟其他slave丢了连接,那么上面两个配置可以确保说,如果不能继续给指定数量的slave发送数据,而且slave超过10秒没有给自己ack消息,那么就直接拒绝客户端的写请求

这样脑裂后的旧master就不会接受client的新数据,也就避免了数据丢失

上面的配置就确保了,如果跟任何一个slave丢了连接,在10秒后发现没有slave给自己ack,那么就拒绝新的写请求

哨兵模式不就是这样的么?主节点不挂为啥切换?既然主从就意味着有同步延迟,主节点一直有写入你切换就会丢失数据;
像这种运行正常但是需要切换主从节点的话,如果想做到不丢失数据,首先你要知道由主到从同步数据的延迟,然后给主节点停机或者关闭服务入口(等待一会,这一会的时间要超过同步数据的延迟时间),这个时候切换就不会丢失数据了。