文章字数:529,阅读全文大约需要2分钟
定义
edis的集群脑裂是指因为网络问题,导致redis master节点跟redis slave节点和sentinel集群处于不同的网络分区,此时因为sentinel集群无法感知到master的存在,所以将slave节点提升为master节点。此时存在两个不同的master节点,就像一个大脑分裂成了两个。
集群脑裂问题中,如果客户端还在基于原来的master节点继续写入数据,那么新的master节点将无法同步这些数据,当网络问题解决之后,sentinel集群将原先的master节点降为slave节点,此时再从新的master中同步数据,将会造成大量的数据丢失。
解决
配置
1 | # 连接到master的最少slave数 |
新版配置
1 | min-replicas-to-write 3 |
如上要求至少3个slave节点,且数据复制和同步的延迟不能超过10秒。否则master就拒绝读写,这样发生集群脑裂原先的master节点接收到写入请求就会拒绝