快照Compatible with Milvus 3.0.x
快照是 Milvus Collection 在特定时间点的镜像,非常适合快速回滚、版本控制和测试。它捕获 Collection 在特定时间戳下的状态,并仅存储元数据和清单文件(如 Schema、索引和向量数据文件(二进制日志)),以实现高效的存储和恢复。
快照是数据的快速、特定时间点的镜像,适用于快速回滚或测试(时间跨度为数天至数周)。与此同时,备份则是独立的完整副本,单独存储以用于长期灾难恢复(时间跨度为数周至数年),并能更好地防范存储系统完全故障。
要创建备份,请参阅《Milvus 备份》。
快照结构
Milvus 采用基于清单的快照架构,可在不复制实际向量数据的情况下,高效地捕获、存储和恢复特定时间点的数据。该架构将元数据管理与物理数据存储分离,从而实现轻量级快照,这些快照引用对象存储中现有的分段文件。
当您为 Collection 创建快照时,Milvus 会收集以下信息:
快照元数据
它提供用于创建快照的基本信息,包括快照名称和描述、目标 Collection ID 以及创建快照的时间点。
Collection description
包含目标Collection的描述,包括其Schema定义、分区信息和属性。
索引信息
它存储索引元数据和索引文件的路径。
分段数据
该部分包含向量数据文件(binlogs)、删除日志(deltalogs)和索引文件。
在上述信息中,Milvus 为每个分段生成一个 Apache Avro 清单文件,并将快照元数据、Collection 描述、索引信息以及清单文件的路径存储在一个 JSON 文件中。下图说明了快照的文件夹结构。
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,以便进行监控和故障排除。
限制与约束
- 快照在创建后即成为不可变的。
- 您只能将快照还原到与原始快照位于同一集群中的新Collection中。
- 恢复后的 Collections 将保留相同的 Schema、分片数和分区数。
- 恢复的历史数据可能会与 TTL 策略发生冲突。建议您在创建快照之前禁用 TTL 或调整 TTL 设置。
- 若要将快照用作
milvus-table的外部数据源,该源快照必须来自常规的StorageV3 Milvus Collection。外部Collection的快照不支持作为milvus-table的数据源。