什么是Redis脑裂,如何解决呢

Redis 脑裂问题是指,在 Redis 哨兵模式或集群模式中,由于网络原因,导致主节点(Master)与哨兵(Sentinel)和从节点(Slave)的通讯中断,此时哨兵就会误以为主节点已宕机,就会在从节点中选举出一个新的主节点,此时 Redis 的集群中就出现了两个主节点的问题,就是 Redis 脑裂问题。

脑裂问题影响

Redis 脑裂问题会导致数据丢失,为什么呢?来看脑裂问题产生的过程:

b380451104794831ba5ad5e7ff9ca0a2.jpeg

 

而最后一步,当旧的 Master 变为 Slave 之后,它的执行流程如下:

  1. Slave(旧 Master)会向 Master(新)申请全量数据。
  2. Master 会通过 bgsave 的方式生成当前 RDB 快照,并将 RDB 发送给 Slave。
  3. Slave 拿到 RDB 之后,先进行 flush 清空当前数据(此时第四步旧客户端给他的发送的数据就丢失了)。
  4. 之后再加载 RDB 数据,初始化自己当前的数据。

从以上过程中可以看出,在执行到第三步的时候,原客户端在旧 Master 写入的数据就丢失了,这就是数据丢失的问题。

如何解决脑裂问题?

脑裂问题只需要在旧 Master 恢复网络之后,切换身份为 Slave 期间,不接收客户端的数据写入即可,那怎么解决这个问题呢?

Redis 为我们提供了以下两个配置,通过以下两个配置可以尽可能的避免数据丢失的问题:

  • min-slaves-to-write:与主节点通信的从节点数量必须大于等于该值主节点,否则主节点拒绝写入。
  • min-slaves-max-lag:主节点与从节点通信的 ACK 消息延迟必须小于该值,否则主节点拒绝写入。

这两个配置项必须同时满足,不然主节点拒绝写入。

在假故障期间满足 min-slaves-to-write 和 min-slaves-max-lag 的要求,那么主节点就会被禁止写入,脑裂造成的数据丢失情况自然也就解决了。

参考 & 鸣谢

javacn.site

相关推荐

  1. Redis问题

    2024-06-05 20:20:05       22 阅读
  2. Zookeeper解决方案

    2024-06-05 20:20:05       15 阅读
  3. RedisRedis集群的原因及解决方案

    2024-06-05 20:20:05       10 阅读
  4. mysql原因及解决方法

    2024-06-05 20:20:05       29 阅读
  5. 【LVS实战】05 keepalived问题解决方案

    2024-06-05 20:20:05       27 阅读
  6. 什么 PHP 内存溢出 ?遇到了要如何解决

    2024-06-05 20:20:05       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-05 20:20:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-05 20:20:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-05 20:20:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-05 20:20:05       18 阅读

热门阅读

  1. 宝塔Linux面板-Docker管理(2024详解)

    2024-06-05 20:20:05       9 阅读
  2. 深度学习中域泛化的简要概述

    2024-06-05 20:20:05       9 阅读
  3. 【设计模式】工厂模式(创建型)⭐⭐⭐

    2024-06-05 20:20:05       7 阅读
  4. 封装PHP用于发送GET和POST请求的公共方法

    2024-06-05 20:20:05       10 阅读
  5. Elasticsearch 认证模拟题 - 6

    2024-06-05 20:20:05       7 阅读
  6. Elasticsearch (ES)内存管理降低内存占用率

    2024-06-05 20:20:05       7 阅读
  7. 高通Android 12/13实现USB拔出关机功能

    2024-06-05 20:20:05       7 阅读
  8. git命令

    git命令

    2024-06-05 20:20:05      8 阅读