快照Compatible with Milvus 3.0.x
快照是 Milvus Collections 的时间点映像,是快速回滚、版本控制和测试的理想选择。它捕捉 Collections 在特定时间戳的状态,只存储元数据和清单文件,如 Schema、索引和向量数据文件(binlogs),以便高效存储和恢复。
快照是快速的时间点数据镜像,适用于快速回滚或测试(几天到几周)。同时,备份是单独存储的独立、完整副本,可用于长期灾难恢复(数周至数年),并能更好地防止整体存储故障。
要创建备份,请参阅Milvus 备份。
快照解剖
Milvus 实现了基于清单的快照架构,可在不复制实际向量数据的情况下实现高效的时间点数据捕获、存储和恢复。该架构将元数据管理与物理数据存储分离开来,实现了引用对象存储中现有段文件的轻量级快照。
为一个 Collection 创建快照时,Milvus 会收集以下内容:
快照元数据
提供创建快照的基本信息,包括快照名称和描述、目标 Collections ID 以及创建快照的时间点。
Collections 描述
它包含目标 Collections 的描述,包括其 Schema 定义、分区信息和属性。
索引信息
存储索引元数据和索引文件路径。
分段数据
它捕获了向量数据文件(binlogs)、删除日志(deltalogs)和索引文件。
在上述信息中,Milvus 会为每个网段生成 Apache Avro 清单文件,并在 JSON 文件中存储快照元数据、Collection 说明、索引信息和清单文件的路径。下图说明了快照文件夹结构。
snapshots/{collection_id}/
├── metadata/
│ └── {snapshot_id}.json # Snapshot metadata (JSON format)
│
└── manifests/
└── {snapshot_id}/ # Directory for each snapshot
├── {segment_id_1}.avro # Individual segment manifest (Avro format)
├── {segment_id_2}.avro
└── ...
创建快照通常只需几毫秒,恢复快照则需要几秒到几分钟,具体取决于数据量。
存储影响和注意事项
一旦 Milvus 在快照中引用了段或索引文件,除非你删除收集快照,否则它不会垃圾收集这些文件。快照消耗的存储空间与目标 Collections 的大小成正比,对象存储成本适用于快照保留。在极端情况下,单个快照甚至会使对象存储成本翻倍。建议您
- 定期删除旧快照,以节省存储空间。
- 使用描述性的名称和说明,以备将来参考。
- 始终验证快照创建和恢复结果。
- 跟踪快照创建时间戳、存储使用情况和恢复任务 ID,以便进行监控和故障排除。
限制和约束
- 快照在创建后不可更改。
- 您只能将快照还原到与原始快照在同一群集中的新集合。
- 恢复的 Collections 保留相同的 Schema、分片数和分区数。
- 恢复的历史数据可能与 TTL 策略冲突。建议在创建快照前禁用 TTL 或调整 TTL 设置。