一次Redis 主从切换,导致数据丢失并陷入只读状态故障
发布网友
发布时间:2024-10-02 18:54
我来回答
共1个回答
热心网友
时间:2024-10-17 01:13
一次 Redis 主从切换导致数据丢失和只读故障,源于配置错误和对Redis操作的不了解。
在业务扩展中,一主一从的Redis架构采用Sentinel实现高可用。然而,在内存扩容升级过程中,由于对maxmemory参数理解不足,导致了意外的问题。在升级主机B后,虽然新slave看似正常同步,但在手动切换主从时,新master由于maxmemory设置过低(3GB),而实际使用内存超过6GB,触发了数据淘汰,造成数据丢失并陷入只读状态。
问题在于,Redis slave默认会无视maxmemory,而在切换为master后,新master不受此规则影响,开始淘汰key,这导致了数据丢失。同时,线上Redis配置策略使master在数据量超过maxmemory时进入只读状态,因为策略仅淘汰过期key。
这次故障的教训是,对于Redis配置的同步和理解至关重要。如果在调整运行时maxmemory时能确保与配置文件一致,或者将配置文件maxmemory设为0,就能避免这次问题。此次事件暴露了个人在Redis配置和操作上的不足,需要进一步学习和提升。