使用 API 備份和還原資料
Milvus Backup 提供資料備份和還原功能,以確保您的 Milvus 資料安全。
取得 Milvus 備份
您可以下載已編譯的二進位檔或從原始碼建立。
要下載編譯後的二進位檔,請前往發行版頁面,在那裡您可以找到所有官方發行版。請記住,請務必使用標示為最新版本的二進位檔。
從原始碼編譯的步驟如下:
git clone git@github.com:zilliztech/milvus-backup.git
go get
go build
準備組態檔案
下載範例組態檔案,並依您的需求進行調整。
然後在已下載或已建立的 Milvus Backup 二進位檔旁邊建立一個資料夾,將資料夾名稱為configs
,並將設定檔放在configs
資料夾內。
您的資料夾結構應與以下相似:
workspace
├── milvus-backup
└── configs
└── backup.yaml
由於 Milvus Backup 無法將您的資料備份至本機路徑,因此在調整組態檔時,請確保 Minio 設定正確。
預設 Minio 資料桶的名稱會因您安裝 Milvus 的方式而異。變更 Minio 設定時,請務必參考下表。
欄位 | Docker Compose | Helm / Milvus 操作員 |
---|---|---|
bucketName | a-bucket | milvus-bucket |
rootPath | 檔案 | 檔案 |
啟動 API 伺服器
然後,您可以按以下步驟啟動 API 伺服器:
./milvus-backup server
API 伺服器預設在 8080 連接埠監聽。您可以使用-p
標誌執行來變更。要啟動以連接埠 443 聆聽的 API 伺服器,步驟如下:
./milvus-backup server -p 443
您可以使用 http://localhost 存取 Swagger UI:
準備資料
如果您運行一個空的本機 Milvus 實例,在預設的埠 19530 上監聽,請使用範例 Python 腳本在您的實例中產生一些資料。請隨意對腳本進行必要的修改,以滿足您的需求。
取得腳本。然後執行腳本來產生資料。確保已安裝官方的 Milvus Python SDKPyMilvus。
python example/prepare_data.py
此步驟是可選的。如果跳過此步驟,請確保您的 Milvus 實例中已經有一些資料。
備份資料
請注意,針對 Milvus 實例執行 Milvus Backup 通常不會影響實例的執行。在備份或還原時,您的 Milvus 實例是完全正常的。
執行以下指令建立備份。如有必要,請變更collection_names
和backup_name
。
curl --location --request POST 'http://localhost:8080/api/v1/create' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"backup_name": "my_backup",
"collection_names": [
"hello_milvus"
]
}'
命令執行後,您可以列出 Minio 設定中指定的資料桶中的備份,如下所示:
curl --location --request GET 'http://localhost:8080/api/v1/list' \
--header 'Content-Type: application/json'
並下載備份檔案,如下所示:
curl --location --request GET 'http://localhost:8080/api/v1/get_backup?backup_id=<test_backup_id>&backup_name=my_backup' \
--header 'Content-Type: application/json'
執行上述指令時,將backup_id
和backup_name
變更為 list API 所傳回的內容。
現在,您可以將備份檔案儲存到安全的地方,以便將來還原,或是上傳到Zilliz Cloud,以您的資料建立一個受管理的向量資料庫。詳情請參閱從 Milvus 遷移到 Zilliz Cloud。
還原資料
您可以使用collection_suffix
選項來呼叫 restore API 指令,從備份中還原資料來建立新的集合。如有必要,請變更collection_names
和backup_name
。
curl --location --request POST 'http://localhost:8080/api/v1/restore' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"collection_names": [
"hello_milvus"
],
"collection_suffix": "_recover",
"backup_name":"my_backup"
}'
collection_suffix
選項可讓您為要建立的新集合設定後綴。上述命令將在您的Milvus實例中建立一個名為hello_milvus_recover的新集合。
如果您希望還原備份的資料集而不更改其名稱,請在從備份還原資料集之前丟棄該資料集。現在您可以執行以下指令,清理在準備資料中產生的資料。
python example/clean_data.py
然後執行以下命令從備份還原資料。
curl --location --request POST 'http://localhost:8080/api/v1/restore' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"collection_names": [
"hello_milvus"
],
"collection_suffix": "",
"backup_name":"my_backup"
}'
還原過程可能很費時,這取決於要還原的資料大小。因此,所有還原任務都是以非同步方式執行。您可以透過執行來檢查還原任務的狀態:
curl --location --request GET 'http://localhost:8080/api/v1/get_restore?id=<test_restore_id>' \
--header 'Content-Type: application/json'
切記將test_restore_id
變更為還原 API 所還原的資料。
驗證還原的資料
還原完成後,您可以按以下方式為還原的資料集編索引,以驗證還原的資料:
python example/verify_data.py
請注意,上述腳本假設您已經以-s
標誌執行restore
指令,且後綴設定為-recover
。請隨意對腳本進行必要的變更,以符合您的需求。