redis哨兵主备切换的数据丢失问题:异步复制、集群脑裂

1、两种数据丢失的情况

主备切换的过程,可能会导致数据丢失
(1)异步复制导致的数据丢失
异步复制导致的数据丢失问题:
在这里插入图片描述
因为master -> slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机了,此时这些部分数据就丢失了
相应的解决方案:
在这里插入图片描述
(2)脑裂导致的数据丢失
在这里插入图片描述
脑裂,也就是说,某个master所在机器突然脱离了正常的网络,跟其他slave机器不能连接,但是实际上master还运行着

此时哨兵可能就会认为master宕机了,然后开启选举,将其他slave切换成了master

这个时候,集群里就会有两个master,也就是所谓的脑裂

此时虽然某个slave被切换成了master,但是可能client还没来得及切换到新的master,还继续写向旧master的数据可能也丢失了

因此旧master再次恢复的时候,会被作为一个slave挂到新的master上去,自己的数据会清空,重新从新的master复制数据
解决方案:可以让客户端client做降级处理
在这里插入图片描述

解决异步复制和脑裂导致的数据丢失

在这里插入图片描述

posted @ 2018-11-19 21:48  抬头不见星空  阅读(45)  评论(0)    收藏  举报