Why: The first pg-stop window counted an in-flight 200 at shutdown, and five writes on the timeline conversation returned 409 while a mock run held it. That measured the probe, not a proven database failure. Evidence: go test ./... in tests/ops/drill_driver passed locally (SELF). Impact: The outage clock starts 2s after stop or kill. RTO is five writes on new conversations. Idempotency replays only the window and retries 409 for up to 2 minutes. The Redis phase no longer uses local outside a function. Refs: feature/u7-ops-drills Co-authored-by: Cursor <cursoragent@cursor.com>
U7 运维演练(C4 / C5)
只打隔离栈。实例名必须以 u7drill 或 u7bk 开头,端口必须落在 18980–18999。
脚本只按自己的 pidfile 结束进程,并且先核对命令行里有本演练的数据目录或端口。
| 文件 | 职责 |
|---|---|
lib.sh |
隔离 PG / Redis / serve 的创建、回收、端口与名称守卫 |
drill_driver/ |
时间线、幂等重放、SSE seq、标记写入、工件、限流突发、权限核对 |
run_fault_drill.sh |
C4:pg-stop、pg-kill、redis-kill |
run_backup_drill.sh |
C5:物理备份 + WAL/PITR,以及 pg_dump,恢复到新目标 |
tests/ops/self_check.sh
tests/ops/run_fault_drill.sh --fault all
tests/ops/run_backup_drill.sh
结果在 results/<ts>/(gitignore)。证据以 make evidence 记入任务卡,来源是 SELF。
本入口不放行第二实例写流量。