概述
脑裂问题,听起来很高端的样子.其实说白了就是主从拓扑结构,在主节点被误切换,导致原主节点还在处理请求,导致新主节点这部分数据缺失的一个现象.一般来说,主从结构多少有脑裂问题.
脑裂问题
说明:redis主从结构正常情况,正常同步,正常处理客户端请求.
说明: master由于处理数据量比较大,或者网络拥堵,没有ack心跳包,哨兵误以为主节点下线,这个时候 选举了新的master,而且这个时候旧master依然在处理 set a 10这个请求
说明:旧的master已经恢复网络,发现已经选举了新master,于是清空本地数据,开始全量同步新master数据 ,导致set a 10这个数据丢失,新master并不知道发生过这次请求
解决方案
1.配置min-slaves-to-write 1, 要求master必须有一个slaver
2.配置min-slaves-max-lag 10,要求主从同步延时不能超过10s
3.只要以上两个配置都不满足,那么当前master会拒绝接受客户端请求,这样可以防止由于脑裂
问题一直丢失数据,可以将数据损失减少到10s以内