此时,由于某种原因,比如网络原因,集群出现了分区,master与slave节点之间断开了联系,sentinel监控到一段时间没有联系认为master故障,然后重新选举,将slave切换为新的master。在发现问题之后,旧的master降为slave同步新的master数据,那么之前的数据被刷新掉,大量数据丢失。我们可以减小min-slaves-max-lag参数的值,这样就可以避免在发生故障时大量的数据丢失,一旦发现延迟超过了该值就不会往master中写入数据。wait 会阻塞当前 client 直到之前的写操作被指定数量的 slave 同步成功。这个时间量是非常重要的,称为节点过期时间。一个 master 在达到过期时间后,就被认为是故障的,进入 error 状态,停止接收写请求,可以被 slave 取代。可以设置节点过期时间,减少 master 在分区期间接收的写入数量,降低数据丢失的损失。

Redis主从集群切换数据丢失的解决方案

Redis主从集群切换数据丢失的解决方案

Redis主从集群切换数据丢失的解决方案

Redis主从集群切换数据丢失的解决方案

Redis主从集群切换数据丢失的解决方案