Redis 主节点突然宕机时,你们能接受丢多少数据和多久恢复?持久化与高可用怎么配置?
我的判断
持久化与高可用先定 RPO/RTO:能丢多少数据、多久恢复,再决定 AOF、RDB、复制和故障转移配置。
如果 Redis 只是可重建缓存,主节点宕机时允许少量缓存丢失,我会更关注快速故障转移和防止同时回源压垮数据库。RDB 加 AOF everysec 通常足够,接受极端情况下约一秒窗口;如果数据承担幂等记录或任务状态,就要重新评估是否应该把权威状态放数据库,而不是靠 Redis 配置模拟强持久。
高可用会使用 Sentinel 或 Cluster,多副本跨故障域。故障演练要测:
- 主节点断电到客户端恢复写入的时间;
- 复制积压与 failover 时可能丢失的已确认写;
- 全量同步对网络、磁盘和延迟的冲击;
- 新主切换后应用连接是否及时刷新。
min-replicas-to-write 可以在副本不足时拒绝写,缩小数据丢失风险,但会牺牲可用性。这个取舍由业务确认,不能宣称主从复制天然零丢失。
同时保留独立备份与恢复演练。副本会同步误删,不能替代备份。
思路拆解问题分析
这题没有统一“最安全配置”。缓存、分布式锁和延时任务对丢数据的容忍完全不同。先把 数据是否可重建、允许的丢失窗口、恢复期间能否降级 说清楚,配置才有意义。