快照應用情境Compatible with Milvus 3.0.x
在本指南中,您將了解快照的常見使用情境。
資料備份與還原
快照是資料的快速、特定時間點的影像,適用於快速回滾或測試(數天至數週)。與此同時,備份則是獨立且完整的副本,會另行儲存以供長期災難復原(數週至數年),並能更好地防範儲存裝置完全故障。
下表比較了快照與備份的差異。
備份 |
快照 |
|
|---|---|---|
備份建立 |
複製所有資料檔案(耗時) |
僅建立元資料(僅需數毫秒) |
還原 |
匯入資料並重建索引 |
僅複製現有的資料與索引檔案 |
效能 |
速度慢且資源消耗大 |
快速且輕量級(僅需數秒至數分鐘) |
對系統的影響 |
I/O 和 CPU 使用率高 |
影響極小 |
建立快照通常只需數毫秒,而還原快照則需數秒至數分鐘,具體時間取決於資料量。
有關快照的限制、規範及其對系統的影響,請參閱《快照》。
透過外部集合進行資料處理
快照可為分析或驗證工作負載提供穩定且特定時間點的資料來源。對於 Milvus 快照,請使用milvus-table 外部集合格式,而非直接將快照檔案作為通用 Spark 輸入進行讀取。 Milvus 快照會儲存集合元資料、區段清單、刪除日誌及主鍵統計資料,因此 Milvus 需要快照元資料 JSON 以及milvus-table 讀取器,以保留正確的資料結構與刪除語義。
此工作流程會在快照資料上建立一個可查詢的外部集合。主要欄位資料仍從快照來源進行引用,而刷新作業會將來源的 StorageV3 清單映射至目標外部區段。
步驟 1:取得快照元資料路徑
從一般的 Milvus 集合中建立或選擇一個快照,然後對其進行描述以取得其物件儲存位置。
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 」外部集合
建立一個其資料結構與快照來源集合相符的外部集合。將 `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"
)
刷新完成後,您可以建立索引、載入外部集合,並針對由快照支援的檢視執行搜尋或查詢操作。