集群脑裂是由于主节点和从节点和
sentinel
处于
不同的网络分区(当主节点失去连接并且无法正常
工作时)
,使得
sentinel
没有能够心跳感知到主节点
,所以通过选举的方式提升了一个从节点为主,这样就存在了两个master
,就像大脑分裂了一样,这样会导致客户端还在老的主节点那里写入数据,新节点无法同步数据,当网络恢复后,
sentinel
会将老的主节点降为从节点,这时再从新
master
同步数据,
就会导致数据丢失。
解决办法
- min-replicas-to-write 1 表示最少的salve节点为1个
- min-replicas-max-lag 5 表示数据复制和同步的延迟不能超过5秒
我们可以修改 redis 的配置,可以设置最少的从节点数量以及缩短主从数据同步的延迟时间,达不到要求就拒绝请求,就可以避免大量的数据丢失