备份、恢复与迁移

本节目标

你将从业务 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 时间点 后仍有事件。恢复流程:

  1. 恢复 状态;
  2. 验证 contract 与 watermark;
  3. 从 outbox/WAL/CDC checkpoint 重放 upsert/delete/ACL;
  4. 用 source revision 拒绝乱序旧事件;
  5. 对账 canonical IDs/hash/ACL;
  6. 重放 deletion ledger;
  7. 构建/等待索引;
  8. 运行 security/quality canary;
  9. 原子切流量。

没有可靠事件日志时,只能全量 canonical reconciliation/rebuild,RTO 需包含它。

跨产品迁移

内部 ANN 图、segment、WAL 通常不兼容。更稳妥:

  1. 冻结 source contract 与逻辑 schema;
  2. 导出 canonical logical records(ID/vector/payload/revision)或从 canonical 重算;
  3. 目标建立新 schema/index;
  4. 验证类型、dimension、metric、filter;
  5. 导入并对账;
  6. 同 query 分别查 source/target;
  7. 比较 exact/ANN、filter、安全和延迟;
  8. 影子/双读;
  9. 原子切 alias/config;
  10. 回滚窗口后回收。

若目标 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 方案或可接受迁移。

练习

  1. 为 15 分钟 RPO、2 小时 RTO 的内部 RAG 设计 replica + backup + outbox。
  2. 根据 Qdrant snapshot 当前范围,列出 alias、其他节点/shard 和追赶事件如何补齐。
  3. 写一个 restore checklist,至少包含 5 个安全和 5 个质量门禁。
  4. 模拟恢复旧快照后 delete-r9 与 upsert-r8 的重放顺序。
  5. 设计 pgvector → 专用向量库的逻辑迁移与回滚。
  6. 解释为什么“可从原文重算”仍可能无法满足 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-目录|向量数据库目录]]。