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

1.8 KiB
Raw Blame History

P6:隔离备份恢复演练

验证日期:2026-09-19。新增 scripts/test-backup-restore.sh,在两个一次性 MySQL 容器之间执行逻辑备份和恢复,恢复后用只读结构核验和核心记录计数确认结果。演练不连接已有数据库,也不修改生产数据。

实际命令与环境

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 客户端导入恢复库。退出清理两个容器和临时凭据文件。

实际结果

{"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 或业务流量,避免把恢复演练误当成恢复后的生产接管证明。