docs(acceptance): 记录 S-07 恢复验收证据

This commit is contained in:
2026-09-09 15:21:37 +08:00
parent a0ba7f55f7
commit 9e772fb5da
2 changed files with 10 additions and 1 deletions
@@ -888,3 +888,12 @@ Core 的独立数据目录目前不等于已授权 Vault。Python 旧笔记写
- 对同一待上传链接分别从其他设备发起 100 次以及在数据库过期后由原设备发起 100 次 GET/PUT/complete/delete 混合请求,全部返回 `UPLOAD_EXPIRED`。同一虚构账号先得到 10 次 `LOGIN_FAILED`,随后 100 次均返回 429 `RATE_LIMITED` 且含 `Retry-After: 60`
- 分别停止并恢复 PostgreSQL、MinIO,再将 staging 目录原子替换为普通文件并恢复。正式运行中最慢故障可见时间为 3061 ms,最慢恢复时间为 1092 ms,六次双 worker 状态切换都低于 8 秒;恢复后原有历史引用对象仍可逐字节读取。
- 提交 `eb0a197` 后在只保留用户 Vault 修改的工作树运行统一 runnersummary/case 均为 `PASSED`commit 为 `eb0a19737ddc59c56f9e3630b023342d24024c9d`,7 项断言通过,耗时 26077 ms。证据目录 `H:\OpenNexus-acceptance\s06-eb0a197-d4c9c74f13a642409ee646de4d31ef49-report\`,报告标记 `contains_credentials=false`。提交前 Sync 服务全套 29 项、runner 6 项、Python 编译与差异检查通过。S-06 可记为通过;备份恢复与性能运维门 S-07/S-09 仍未完成,整体生产化目标保持未完成。
## 增量:S-07 空实例初始化与备份恢复生产验收
- 新增生产 `initialize``backup``restore` 命令。Compose 以一次性初始化服务幂等创建 PostgreSQL schema 和 `opennexus` Bucket,长期 Sync 服务仍使用受限 Bucket 凭据;生产栈 driver 同样只调用该入口,不再用验收脚本私自创建 schema/Bucket。重复初始化前后逐表与逐对象目录摘要完全一致。
- `backup` 在同一 PostgreSQL repeatable-read 只读事务中冻结 schema v1 全表与对象目录,拒绝未完成上传和缺失历史引用对象;随后流式下载目录中的不可变对象并逐个核对长度和 SHA-256,最终以目录原子替换发布带时间、逐表行数、对象数与字节数的 manifest。`restore` 默认拒绝超过 24 小时的备份,只允许空数据库和空/不存在 Bucket;它先完整校验本地快照,再上传并回读全部对象,最后在持有迁移 advisory lock 的单个 PostgreSQL 事务中创建、导入和复核数据库。
- S-07 数据集包含 9990 个独立 4 KiB 笔记对象与 10 个独立 100 MiB 附件对象,共 10000 个文件、10000 个对象、1089495040 字节。验收停止源服务与依赖后验证删除整个源 PostgreSQL/MinIO 实例目录,再创建全新依赖目录恢复;10000/10000 对象全部回读验 hash,恢复账号可经真实 HTTP 下载原对象。
- 正式运行从创建新 PostgreSQL/MinIO 到恢复并启动双 worker `/ready` 的 RTO 为 59081 ms,备份年龄为 12 秒。随后把恢复库 schema 版本设为不兼容值,先全量读取并核对 10000 个对象形成旧数据摘要,运行生产迁移确认失败,再逐表和逐对象复核摘要未变;恢复版本门后服务重新就绪。
- 提交 `da126dd` 后在只保留用户 Vault 修改的工作树运行统一 runnersummary/case 均为 `PASSED`commit 为 `da126dd842f23e706516b21579e559350792ab56`,6 项断言通过,耗时 171652 ms。证据目录 `H:\OpenNexus-acceptance\s07-da126dd-6102c4c109ba458b9c67269a939e284d-report\`,报告标记 `contains_credentials=false`。Sync 服务全套 29 项、runner 6 项、Python 编译与差异检查通过。当前机器无 Docker CLI,故修改后的 Compose 引擎编排与生产 TLS 仍需发布环境复演;S-07 可记为通过,Sync 服务剩余性能运维门为 S-09,整体生产化目标保持未完成。
+1 -1
View File
@@ -22,7 +22,7 @@ uv run pytest
`initialize` 命令已通过真实 PostgreSQL/MinIO 的空实例与重复运行验证,并由 Compose 的一次性服务调用。MinIO 同步账号仍须由管理员创建并限制到 `opennexus` Bucket`.env` 中的 root 与同步凭据必须不同。
2026-09-08 已在独立 Docker 项目完成真实 PostgreSQL/MinIO 双 worker 测试部署,修正基础镜像中的 `sync` 系统用户名冲突。测试专用 HTTP 地址、故障检查、完整验收缺口与运维入口见[验收报告](../docs/development/OpenNexus验收报告-2026-09-08.md)。仓库通用 Compose 的生产 TLS 与备份恢复仍未通过发布验收
2026-09-08 已在独立 Docker 项目完成真实 PostgreSQL/MinIO 双 worker 测试部署,修正基础镜像中的 `sync` 系统用户名冲突。测试专用 HTTP 地址、故障检查、完整验收缺口与运维入口见[验收报告](../docs/development/OpenNexus验收报告-2026-09-08.md)。S-07 已在原生 PostgreSQL 17.11/MinIO 实例完成 1 GiB/10,000 文件的删除源实例与空实例恢复;当前机器没有 Docker CLI,因此修改后的 Compose 编排仍需在发布环境复演,生产 TLS 也仍是独立发布门
## 备份与空实例恢复