首页/数据/数据库速查/主从部署安全清单(脑裂/内存/持久化)
Redis 运维与场景124 条

主从部署安全清单(脑裂/内存/持久化)

主从不是自动高可用:需要固定的安全基线——从库只读、主库别关持久化、maxmemory 独立设置、min-replicas 防脑裂。

数据库速查数据更新于 2026-10-13

主从部署安全清单

主从复制不是自动高可用:主库宕机后从库不会自动顶上。部署阶段要固定几条安全基线——从库保持只读、主库别关持久化、每实例独立设置内存上限、按一致性要求决定是否在副本不足时拒绝写入。这几条都会直接影响故障时的数据安全。

基本信息

从库只读replica-read-only 保持开启,写入只走主库
主库持久化至少保留快照或追加日志之一
内存上限每个实例独立设置,避免从库无限制吃内存
脑裂防护可配置副本数量与最大延迟条件,不足时拒绝写入
时钟同步主从主机需要时间同步,延迟与日志时间线都依赖它

部署检查项

  • 从库只读:确认配置未被改动,避免出现第二个写入点
  • 主库持久化:重启后偏移归零会让全部从库全量重同步,恢复窗口很长
  • 内存上限:从库内存独立设置,与主库容量不要混为一谈
  • 密码成对配置:主库密码与从库连接主库的密码都要设置且一致
  • 拒绝写入策略:按业务对一致性的要求决定是否启用,并评估可用性代价
  • 时间同步:所有节点接入统一时间源,便于对齐日志与指标
  • 只读副本数量与分布:跨机架跨机房部署,避免同时失去主库与全部副本

上线核对命令

上线核对命令
redis-cli -h 主库 INFO replication | head -20
redis-cli -h 从库 CONFIG GET replica-read-only    # 应为 yes
redis-cli -h 从库 CONFIG GET maxmemory            # 独立设置且非零
redis-cli -h 从库 CONFIG GET appendonly           # 持久化策略
redis-cli -h 主库 CONFIG GET masterauth           # 从库连主库用的密码
redis-cli -h 主库 CONFIG GET min-replicas-to-write # 脑裂防护相关
redis-cli -h 从库 INFO replication | grep -E "master_link_status|slave_repl_offset"

风险项与后果

风险项后果
以为主从等于高可用主库宕机后写请求全部失败,无人接管
主库未开持久化重启后数据丢失并触发全体从库全量重同步
从库内存上限与主库不一致同步完成后从库开始淘汰数据,读结果不一致
只读配置被改动从库被写入导致数据分叉与复制中断
未做时间同步延迟判断与日志时间线对不上,排障效率极低
「主库挂了从库会自动顶上」是错误预期:原生主从没有自动切换,自动切换依赖哨兵或集群方案。
开启副本不足时拒绝写入会牺牲可用性换取一致性:业务能接受短暂不可写时才启用。

易错点

  • 把主从当成高可用:主库故障后长时间无人接管,写入整体不可用
  • 从库内存上限设得比主库大或干脆不设:全量同步后从库淘汰数据或内存失控
  • 主从不配置密码或只配一半:认证失败或链路被未授权访问
  • 从库与主库放在同一机架:一次故障同时影响主库与全部副本

数据来源与参考

  • Redis 官方文档: 复制
  • Redis 官方文档: min-replicas-to-write

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌