什么是脑裂
脑裂就是指在主从集群中,同时有两个主节点,它们都能接收写请求。⽽脑裂最直接的影响,就是客户端不知道应该往哪个主节点写⼊数据,结果就是不同的客户端会往不同的主节点上写⼊数据。
为什么会导致脑裂?
假设当前Redis集群的某个主库突然出现暂时性 失联 ,⽽并不是真的发⽣了故障,此时集群会发起选举进⾏主从切换。当这个原始的主库从假故障中恢复后,⼜开始处理请求,但是集群已经选出了新的主库,这样⼀来,旧的主库和新主库就会同时存在,导致了脑裂现象
如何解决脑裂
解决⽅法可以在redis配置⾥加上如下参数:
1 #写数据成功最少同步的slave数量,这个数量可以模仿⼤于半数机制配置,
2 #⽐如集群总共三个节点可以配置 1,加上leader就是2,超过了半数
3 min-replicas-to-write 2
注意:这个配置在⼀定程度上会影响集群的可⽤性,⽐如slave要是少于1个,这个集群就算leader正常也不能提供服务了,需要具体场景权衡选择。