test: add mysql outage recovery rehearsal
This commit is contained in:
29
docs/reports/phase-6-db-recovery.md
Normal file
29
docs/reports/phase-6-db-recovery.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# P6:MySQL 短暂不可用恢复基线
|
||||
|
||||
验证日期:2026-09-20。本批针对生产验收项 A18,验证 Orbit 在 MySQL 容器短暂停止并以同一数据卷恢复后,readiness 和任务受理行为保持可核对。
|
||||
|
||||
## 实际环境与命令
|
||||
|
||||
环境为 macOS arm64、当前 `bin/orbit`/`bin/orbit-migrate`/`bin/orbit-admin`、Docker MySQL 8.4。脚本创建随机本地卷和端口,迁移 28 个版本,初始化一个通用命名空间和队列:
|
||||
|
||||
``@@BT@sh
|
||||
DOCKER=/usr/local/bin/docker \
|
||||
ORBIT_TEST_MYSQL_IMAGE=mysql:8.4 \
|
||||
sh scripts/test-db-recovery.sh
|
||||
``@@BT@
|
||||
|
||||
数据库容器停止并移除后,脚本在相同端口和卷上创建恢复容器;Orbit 进程保持运行。
|
||||
|
||||
## 实际结果
|
||||
|
||||
``@@BT@json
|
||||
{"initial_readiness":200,"during_database_outage":503,"after_database_recovery":200,"task_accepted_after_recovery":true}
|
||||
``@@BT@
|
||||
|
||||
恢复后的任务受理使用原命名空间凭据和固定 `Idempotency-Key`,说明新数据库连接能重新通过鉴权、结构检查、权限和受理事务。脚本没有启动 Worker,因此没有把任务受理误报为业务处理完成。
|
||||
|
||||
脚本语法检查和文档链接检查通过;实际数据库结构继续由 `orbit-admin verify` 核对零外键。标准全量回归仍需在资源充足环境执行,不能用本次短暂中断演练替代。
|
||||
|
||||
## 边界
|
||||
|
||||
本证据只覆盖单节点数据库连接中断和同卷恢复。它不证明 MySQL 主节点切换、复制确认、跨故障域、磁盘损坏、备份介质持久性、进行中租约接管、外部副作用核对、生产容量或 RPO/RTO。生产上线仍需按目标拓扑独立演练。
|
||||
Reference in New Issue
Block a user