备份、恢复与迁移
本节目标
你将从业务 RPO/RTO 反推备份范围,区分 replica、snapshot、backup 与 canonical re-embed;写出加密、保留和完整性清单;在隔离环境恢复并用 ID、ACL、删除、gold query 和性能验收。
先定义 RPO 与 RTO
- RPO(Recovery Point Objective):最多允许丢失多长时间的数据。例如 15 分钟。
- RTO(Recovery Time Objective):故障后多久恢复到可用服务。例如 2 小时。
还需定义:
- 恢复到“能启动”还是达到查询 SLO;
- 允许重算向量还是必须快速恢复索引;
- 删除/ACL 事件能否丢;
- 哪些 tenant/region 有不同目标;
- 恢复期间读写如何降级;
- 上游 canonical source 是否可用;
- 模型/revision/SDK 是否还能获取。
“向量可以重算”只解决 vector values,不自动恢复 stable IDs、payload/ACL、published alias、tombstone、index config 和删除水位。
四种能力不要混淆
| 能力 | 主要用途 | 不能单独解决 |
|---|---|---|
| Replica | 节点故障可用性 | 误删、逻辑损坏、勒索、长期保留 |
| Snapshot | 某产品/范围的时间点状态 | 未包含的 alias/集群配置、跨产品兼容 |
| Backup | 独立保留、灾难恢复 | 若不演练,不能证明可恢复 |
| Rebuild from canonical | 重新生成派生索引 | 模型不可用、成本/时间、缺 ACL/tombstone |
生产方案常组合:replica 抗短故障,定期 backup/snapshot 抗灾难,canonical/outbox 支持重建和恢复后追赶。
备份清单
数据与 schema
- collection/table/namespace;
- space contract:model/revision/dimension/metric/normalize/dtype;
- points/vectors;
- payload、tenant、ACL、status;
- point/source/chunk mapping;
- tombstones/delete watermark;
- scalar/payload/ANN index 配置;
- named/sparse vectors。
控制面
- published alias/pointer;
- tenant/shard/partition mapping;
- access policies/service config;
- replication/shard topology(是否需要取决于恢复方式);
- app/schema version;
- encryption/key reference;
- outbox/CDC checkpoint;
- restore/runbook version。
备份元数据
- backup/snapshot ID、创建时间、source cluster/version;
- 覆盖的 shards/nodes/collections;
- logical/physical、full/incremental;
- checksum/manifest;
- size、object count;
- encryption、location、retention、immutability;
- last successful restore test。
产品快照范围必须核对
截至 2026-07-22,Qdrant 当前文档说明 collection snapshot 包含特定节点上该 collection 的配置、points 和 payload;distributed deployment 需要按节点处理,collection alias 不包含在该 snapshot 中。Qdrant Cloud backup 与 self-hosted snapshots 又是不同能力。
这说明“下载了一个 snapshot”仍要问:
- 是哪个 node/shard?
- 是否完整 collection?
- aliases 是否另存?
- index/quantization 是否包含?
- 增量写如何追赶?
- 版本兼容范围?
- 恢复到现有还是新 collection?
- 安全凭据/加密如何处理?
pgvector 依赖 PostgreSQL 数据文件/WAL/逻辑备份体系,恢复语义又不同。只能按所选部署的当前官方手册设计。
备份一致点
写入持续发生时,多个 shards/collections 的快照时间可能不同。若业务要求 point、ACL、alias 和 source revision 一致,需要:
- 可识别的 snapshot watermark;
- 短暂停写/切 staging;
- 数据库事务/一致快照;
- WAL/CDC checkpoint;
- 恢复后按 outbox 重放;
- 最终 reconciliation。
不能把多个独立时间点文件拼起来后称为原子全库快照,除非产品明确保证。
安全与保留
向量和 payload 可能包含敏感派生信息。备份需要:
- 传输与静态加密;
- 密钥与备份分离管理;
- 最小访问、审计和定期权限复核;
- region/data residency;
- immutable/防删除策略(按威胁模型);
- 明确保留、到期和 legal hold;
- 恢复环境网络隔离;
- 不在普通日志输出凭据、正文或完整向量。
删除请求与不可变备份存在张力。记录已删除 IDs/tenant 的 deletion ledger,在恢复后、开放查询前重放;按政策到期销毁旧备份。具体合规结论需法律/治理确认。
恢复不是“进程启动成功”
隔离环境恢复后分层验证:
机械完整性
- manifest/checksum;
- collection/schema/contract signature;
- point ID set 或分区 count + hash;
- payload required fields;
- dimension、finite/norm 抽样或全量;
- aliases/routing;
- tombstone/delete watermark;
- scalar/ANN index ready。
安全
- 其他 tenant 完全相同 vector 不返回;
- 空 ACL/groups fail-closed;
- group revoke/deleted points 不复活;
- service credentials 最小权限;
- restore 环境无公网暴露。
质量
- exact/ANN canary;
- gold query Recall/MRR/nDCG;
- filter selectivity 子组;
- new/old revision 只见 published;
- score/tie 规则一致。
性能与操作
- cold start、index load/rebuild;
- P95/P99 与 QPS;
- 写入/删除;
- replication/shard health;
- RPO 实际丢失量;
- RTO 从事故开始到验收通过的总时间。
只有全部门禁通过才恢复流量。
恢复后的追赶
Snapshot 时间点 后仍有事件。恢复流程:
- 恢复 状态;
- 验证 contract 与 watermark;
- 从 outbox/WAL/CDC checkpoint 重放 upsert/delete/ACL;
- 用 source revision 拒绝乱序旧事件;
- 对账 canonical IDs/hash/ACL;
- 重放 deletion ledger;
- 构建/等待索引;
- 运行 security/quality canary;
- 原子切流量。
没有可靠事件日志时,只能全量 canonical reconciliation/rebuild,RTO 需包含它。
跨产品迁移
内部 ANN 图、segment、WAL 通常不兼容。更稳妥:
- 冻结 source contract 与逻辑 schema;
- 导出 canonical logical records(ID/vector/payload/revision)或从 canonical 重算;
- 目标建立新 schema/index;
- 验证类型、dimension、metric、filter;
- 导入并对账;
- 同 query 分别查 source/target;
- 比较 exact/ANN、filter、安全和延迟;
- 影子/双读;
- 原子切 alias/config;
- 回滚窗口后回收。
若目标 metric/API score 方向不同,先用小 fixture 验证排序。不要复制内部索引文件并假设兼容。
恢复演练
建议按风险定期执行,而非只在事故时第一次:
| 阶段 | 记录 |
|---|---|
| 触发 | 假设故障、负责人、开始时间 |
| 获取 | backup ID、checksum、权限、版本 |
| 恢复 | 隔离环境、命令、耗时、错误 |
| 追赶 | watermark、事件数、delete ledger |
| 验证 | inventory、安全、gold、性能 |
| 决策 | 是否满足 RPO/RTO、阻塞项 |
| 改进 | runbook、自动化、下次日期 |
演练使用脱敏/受控数据;若使用生产备份,恢复环境必须满足同等级安全要求。
常见错误与排查
- 有 replica 所以不备份:误删会同步复制。
- snapshot 文件存在即成功:执行隔离 restore 和门禁。
- 只备 vector:ACL、ID、alias、tombstone 和 config 丢失。
- distributed 只快照一个 node:核对 shard/node coverage。
- 恢复后删除数据复活:缺 deletion watermark/ledger 重放。
- 跨产品复制索引文件:改逻辑导出或 canonical rebuild。
- RTO 只计解压时间:加 index ready、追赶、验证和切流量。
- 备份访问过宽:单独最小权限、加密、审计和恢复隔离。
- 模型已下线无法重算:保存许可/模型 artifact/revision 方案或可接受迁移。
练习
- 为 15 分钟 RPO、2 小时 RTO 的内部 RAG 设计 replica + backup + outbox。
- 根据 Qdrant snapshot 当前范围,列出 alias、其他节点/shard 和追赶事件如何补齐。
- 写一个 restore checklist,至少包含 5 个安全和 5 个质量门禁。
- 模拟恢复旧快照后 delete-r9 与 upsert-r8 的重放顺序。
- 设计 pgvector → 专用向量库的逻辑迁移与回滚。
- 解释为什么“可从原文重算”仍可能无法满足 RTO。
掌握检查
- 我能定义并实测 RPO/RTO。
- 我区分 replica、snapshot、backup 和 canonical rebuild。
- 备份包含数据、schema、ACL、alias、tombstone、watermark 与配置。
- 产品快照范围按版本核对,不凭名称猜。
- 恢复在隔离环境验证 inventory、安全、质量和性能。
- 恢复后重放事件与 deletion ledger,再开放查询。
- 跨产品迁移使用逻辑记录/重算,不假设内部索引兼容。
- 备份有加密、访问、保留和定期演练。
小结与下一步
当你知道系统如何失败和恢复,才有足够信息做产品选型。下一步用目标数据、SLO、过滤和运维能力比较候选:[[Knowledge/AI Agent Engineer/docs-CN/向量数据库/07-选型与基准评测|选型与基准评测]]。
参考资料
来源获取日期:2026-07-22。返回 [[Knowledge/AI Agent Engineer/docs-CN/向量数据库/00-目录|向量数据库目录]]。