演练要回答什么
演练剧本覆盖:主从切换、副本宕机、网络分区、节点重启。在与生产同构的环境执行,记录 RTO 与数据行为,同时验证监控告警与处置手册是否真的有效。演练的价值在于把文档里是这样变成实测是这样,两者之间的差距就是隐患。
基本信息
| 演练场景 | 切换、宕机、分区、重启 |
|---|---|
| 记录内容 | RTO 与数据影响 |
| 同步验证 | 告警触发与处置手册 |
| 环境要求 | 与生产同构的镜像环境 |
典型使用场景
- 验证主从切换的实际耗时与数据丢失窗口
- 验证哨兵或集群的自动故障转移是否按预期动作
- 验证客户端在切换窗口的表现:是否报错、能否自愈
- 验证告警是否真的会触发、通知是否送达
- 验证处置手册里的命令与判断标准是否仍然有效
演练常用命令
演练常用命令
redis-cli -p 26379 SENTINEL FAILOVER mymaster # 手动触发一次故障转移(哨兵)
redis-cli INFO replication # 观察角色是否已切换
redis-cli INFO server | grep -E 'uptime_in_seconds' # 确认是否发生重启
redis-cli -p 26379 SENTINEL MASTERS # 查看哨兵监控的主库状态
redis-cli INFO stats | grep -E 'sync_full' # 观察全量同步次数变化
redis-cli --latency # 记录切换期间的延迟表现场景、预期与记录
| 演练场景 | 预期行为 | 要记录什么 |
|---|---|---|
| 主从切换 | 从库被提升为主库 | RTO、数据丢失窗口、客户端报错时长 |
| 副本宕机 | 主库继续提供写入 | 复制积压大小、恢复后是否转全量同步 |
| 网络分区 | 少数派一侧停止写入 | 分区期间两侧的可用性与一致性表现 |
| 节点重启 | 从 RDB 或 AOF 恢复数据 | 恢复耗时、加载期间客户端表现 |
| 大键删除 | 观察主线程是否停顿 | 实际阻塞时长与受影响请求数 |
演练要在与生产同构的环境进行,尤其是网络拓扑与实例规格。只在测试环境演练,生产网络差异带来的问题不会被覆盖到。
演练本身有风险:必须有明确的执行脚本与回滚步骤,并安排在低峰窗口,否则演练操作自己就会变成一次故障。
演练的产出不是通过或失败,而是一份差距清单:预期与实际的差异、手册里失效的命令、没响的告警,逐条转成改进项。