• 关于 Milvus
  • 开始使用
  • 概念
  • 用户指南
  • 数据导入
  • AI 工具
  • 管理指南
  • 工具
  • 集成
  • 教程
  • 常见问题解答
  • API Reference

快照用例Compatible with Milvus 3.0.x

在本指南中,您将了解快照的常见用例。

数据备份与恢复

快照是数据的快速、特定时间点映像,适用于快速回滚或测试(时间跨度为数天至数周)。与此同时,备份则是独立的完整副本,单独存储以用于长期灾难恢复(时间跨度为数周至数年),并能更好地防范存储系统完全故障。

下表对比了快照和备份。

备份

快照

备份创建

复制所有数据文件(耗时)

仅创建元数据(仅需几毫秒)

还原

导入数据并重建索引

仅复制现有数据和索引文件

性能

速度慢且资源消耗大

快速且轻量级(仅需几秒到几分钟)

对系统的影响

I/O 和 CPU 使用率较高

影响极小

创建快照通常只需几毫秒,而恢复快照则根据数据量不同,耗时从几秒到几分钟不等。

有关快照限制、约束及其对系统影响的更多详细信息,请参阅“快照”。

使用外部Collection进行数据处理

快照可为分析或验证工作负载提供稳定的、特定时间点的数据源。对于 Milvus 快照,请使用milvus-table 外部 Collection 格式,而非直接将快照文件作为通用 Spark 输入进行读取。 Milvus快照存储了Collection元数据、分段清单、删除日志和主键统计信息,因此Milvus需要快照元数据JSON以及milvus-table 读取器,以保留正确的Schema和删除语义。

此工作流会在快照数据上创建一个可查询的外部 Collection。主列数据仍从快照源进行引用,而刷新操作会将源 StorageV3 清单映射到目标外部分段。

步骤 1:获取快照元数据路径

从常规 Milvus Collection 中创建或选择一个快照,然后对其进行描述以获取其对象存储位置。

from pymilvus import DataType, MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

snapshot_info = client.describe_snapshot(
    snapshot_name="analytics_snapshot_20260321",
    collection_name="my_collection",
    include_collection_info=True
)

external_source = f"s3://bucket/{snapshot_info.s3_location}"

步骤 2:创建并刷新milvus-table 外部 Collection

创建一个Schema与快照源Collection匹配的外部Collection。将external_spec.format 设置为"milvus-table" ,并将每个目标数据字段的external_field 设置为对应的源字段名称。

schema = client.create_schema(
    external_source=external_source,
    external_spec="""{
        "format": "milvus-table",
        "extfs": {
            "cloud_provider": "aws",
            "region": "us-west-2",
            "access_key_id": "YOUR_ACCESS_KEY",
            "access_key_value": "YOUR_SECRET_KEY"
        }
    }""",
)

schema.add_field(
    field_name="id",
    datatype=DataType.INT64,
    is_primary=True,
    external_field="id",
)
schema.add_field(
    field_name="embedding",
    datatype=DataType.FLOAT_VECTOR,
    dim=768,
    external_field="embedding",
)

client.create_collection(
    collection_name="snapshot_external_collection",
    schema=schema,
)

job_id = client.refresh_external_collection(
    collection_name="snapshot_external_collection"
)

刷新完成后,您可以创建索引、加载外部Collection,并对基于快照的视图执行搜索或查询操作。

翻译自DeepL

想要更快、更简单、更好用的 Milvus SaaS服务 ?

Zilliz Cloud是基于Milvus的全托管向量数据库,拥有更高性能,更易扩展,以及卓越性价比

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?