Files
orbit/docs/reports/phase-6-backup-restore.md

25 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P6:隔离备份恢复演练
验证日期:2026-09-19。新增 `scripts/test-backup-restore.sh`,在两个一次性 MySQL 容器之间执行逻辑备份和恢复,恢复后用只读结构核验和核心记录计数确认结果。演练不连接已有数据库,也不修改生产数据。
## 实际命令与环境
```sh
DOCKER=/usr/local/bin/docker ORBIT_TEST_MYSQL_IMAGE=mysql:8.4 \
sh scripts/test-backup-restore.sh
```
源库和恢复库分别使用随机 root 密码、随机映射端口和独立数据库名。源库运行当前 `bin/orbit-migrate`,再通过 `bin/orbit-admin bootstrap` 写入一个通用应用、命名空间、凭据和队列;`mysqldump --single-transaction --routines --triggers --events --hex-blob --no-tablespaces` 导出后,通过容器内 MySQL 客户端导入恢复库。退出清理两个容器和临时凭据文件。
## 实际结果
```json
{"source_core_counts":"1,1,1,1,28","restore_core_counts":"1,1,1,1,28","restore_foreign_key_count":0,"verify":{"schema_version":28,"migration_count":28,"foreign_key_count":0,"required_index_count":6,"complete":true}}
```
源库和恢复库的应用、命名空间、凭据、队列、迁移账本计数一致;恢复库通过迁移校验、6 个固定观测索引和零外键检查。备份文件中没有凭据原文,临时私密操作文件由脚本退出处理。
## 验收边界
本次证明同版本 MySQL 的一次逻辑备份可以恢复为可被当前二进制读取的数据库,并保持无外键结构。它没有证明备份介质持久性、备份窗口内的大库锁/IO影响、跨版本升级恢复、复制切换、跨故障域部署、生产密钥托管、外部业务副作用核对或 RPO/RTO;这些仍需目标生产拓扑中的独立演练。恢复库也没有被接入 Worker 或业务流量,避免把恢复演练误当成恢复后的生产接管证明。