Redis主从集群切换数据丢失问题
一、数据丢失的情况
异步复制同步丢失
集群产生脑裂数据丢失
1.异步复制丢失
对于Redis主节点与从节点之间的数据复制,是异步复制的,当客户端发送写请求给master节点的时候,客户端会返回OK,然后同步到各个slave节点中。
如果此时master还没来得及同步给slave节点时发生宕机,那么master内存中的数据会丢失;
要是master中开启持久化设置数据可不可以保证不丢失呢?答案是否定的。在master 发生宕机后,sentinel集群检测到master发生故障,重新选举新的master,如果旧的master在故障恢复后重启,那么此时它需要同步新master的数据,此时新的master的数据是空的(假设这段时间中没有数据写入)。那么旧master中的数据就会被刷新掉,此时数据还是会丢失。
2.集群产生脑裂
首先我们需要理解集群的脑裂现象,这就好比一个人有两个大脑,那么到底受谁来控制呢?在分布式集群中,分布式协作框架zookeeper很好的解决了这个问题,通过控制半数以上的机器来解决。
那么在Redis中,集群脑裂产生数据丢失的现象是怎么样的呢?
假设我们有一个redis集群,正常情况下client会向master发送请求,然后同步到salve,sentinel集群监控着集群,在集群发生故障时进行自动故障转移。
此时,由于某种原因,比如网络原因,集群出现了分区,master与slave节点之间断开了联系,sentinel监控到一段时间没有联系认为master故障,然后重新选举,将slave切换为新的master。但是master可能并没有发生故障,只是网络产生分区,此时client任然在旧的master上写数据,而新的master中没有数据,如果不及时发现问题进行处理可能旧的master中堆积大量数据。在发现问题之后,旧的master降为slave同步新的master数据,那么之前的数据被刷新掉,大量数据丢失。
相关文章
- 简单快捷:用Redis设置安全的登录密码(redis登录设置密码)
- Redis:极速存储数据的首选(redis当数据库)
- 使用Redis保存数据:建立你的第一个数据仓库(redis数据仓库)
- 阿里云 Redis 迁移:如何顺利安全地进行Redis数据迁移?(阿里云redis迁移)
- Redis让性能提升精准掌控缓存(怎样用redis做缓存)
- 红色物理学家在Redis中探索物理之谜(物理学家redis)
- 测试Redis中所有Key的有效性(测试redis所有key)
- 如何高效存储合理存放数据到Redis中(什么数据放到redis中)
- 完美的应用,即使不用Redis集群也能实现(不用redis集群)
- 如何快速配置Redis数据库(如何配置redis库)
- 破解Redis提升存取速度(写redis速度)
- 大数据Redis究竟有无必要(大数据需不需要redis)
- 多线程并发写入Redis的高效率实现(多线程 写入 redis)
- 提升系统性能,使用Redis缓存策略(使用缓存redis)
- 哨兵护卫下的Redis安全(哨兵的redis)
- 使用 Redis 算法实现精准数据排重(利用redis 数据排重)
- 教您如何构建Redis高可用集群(redis高可用集群教程)
- Redis集群连接哪个节点(redis集群连哪个节点)
- Redis集群模式从搭建到部署(redis集群模式的搭建)
- Redis集群挂载优化分布式缓存管理(redis集群挂载)
- Redis集群结构千万数据完美对接(redis集群图)
- 探索Redis集群的三种模式(redis集群几种模式)
- 设置Redis集群的最佳个数(redis集群个数)
- Redis集群开启HSET新纪元(redis 集群hset)
- 最佳的Redis集群基于阿里云搭建(redis 阿里云集群)
- Redis谁在维护它(redis谁在维护)
- 架构Redis集群仅需单台服务器实现(redis集群单数台)
- 使用Redis轻松管理状态数据(redis缓存状态数据)