Redis
- 分类
- 分布式系统
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/29 00:57
答案
主从切换主要有两种情况会造成数据丢失: 1. 异步复制同步丢失:由于主->从是异步复制,如果主服务器写入后,还没发给从服务器就宕机,或者网络发生故障,就会导致数据丢失,针对这种情况,可以设置最大延迟,如果从节点数据复制和同步的延迟都超过了这个最大值,主服务器就会拒收写请求,客户端可以采用降级措施,先将请求进行缓存,等主节点恢复正常了再执行。 2. 集群产生脑裂丢失:当发生某些故障,导致主服务器无法向从服务器发送信息,但客户端仍可以写入主节点,此时,哨兵节点也发现主节点丢失,那么他就会重新选举一个主节点,当旧主节点恢复正常后,他会降级为从节点,向新主节点建立连接,并且申请同步数据,清除自己的数据,但是这个时候,就会清除客户端向他写入的数据,导致数据丢失。解决方法就是,可以设置当主节点发现从节点下线太多,或者网络延迟太大,就拒收客户端请求,直到恢复正常,或者重新选举主节点,这样客户端的数据就只会写入新主节点,不会导致丢失。
相关题目(5)
什么是热点 key,如何处理?共源 1
分布式系统Redis
watch dog 机制是什么?共源 1
分布式系统并发锁Redis
Redis 如何实现分布式锁?共源 1
分布式系统锁Redis
分布式系统并发Redis
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(数据库).md
knowledge_noteQuestion 124: 主从切换如何减少数据丢失?
Source answer: 主从切换主要有两种情况会造成数据丢失: 1. 异步复制同步丢失:由于主->从是异步复制,如果主服务器写入后,还没发给从服务器就宕机,或者网络发生故障,就会导致数据丢失,针对这种情况,可以设置最大延迟,如果从节点数据复制和同步的延迟都超过了这个最大值,主服务器就会拒收写请求,客户端可以采用降级措施,先将请求进行缓存,等主节点恢复正常了再执行。 2. 集群产生脑裂丢失:当发生某些故障,导致主服务器无法向从服务器发送信息,但客户端仍可以写入主节点,此时,哨兵节点也发现主节点丢失,那么他就会重新选举一个主节点,当旧主节点恢复正常后,他会降级为从节点,向新主节点建立连接,并且申请同步数据,清除自己的数据,但是这个时候,就会清除客户端向他写入的数据,导致数据丢失。解决方法就是,可以设置当主节点发现从节点下线太多,或者网络延迟太大,就拒收客户端请求,直到恢复正常,或者重新选举主节点,这样客户端的数据就只会写入新主节点,不会导致丢失。
Reviewed answer: 需要同时应对异步复制丢失和脑裂丢失。可通过设置复制延迟阈值,在从节点延迟过大时主节点拒绝写请求;也可在检测到从节点大量下线或网络延迟过大时拒绝客户端写入,减少旧主恢复后被覆盖导致的数据丢失。