從 Milvus 1.x
本指南提供了從 Milvus 1.x (包括 0.9.x 及以上) 遷移數據到 Milvus 2.x 的全面的、逐步的過程。按照本指南,您將能夠有效地傳輸您的數據,利用 Milvus 2.x 先進的功能和改進的性能。
先決條件
- 軟體版本:
- 源 Milvus: 0.9.x 至 1.x
- 目標 Milvus: 2.x
- 所需的工具:
- Milvus-migration工具。安裝細節請參考安裝遷移工具。
匯出來源 Milvus 安裝的元資料
為了準備Milvus 0.9.x到1.x的遷移數據,停止源Milvus或至少停止在源Milvus中執行任何DML操作。
匯出源 Milvus 安裝的 metadata 到
meta.json
。- 對於使用 MySQL 作為後端的安裝,執行
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir
- 對於使用 SQLite 作為後端的安裝,執行
./milvus-migration export -s /milvus/db/meta.sqlite -o outputDir
複製 Milvus 安裝的
tables
資料夾,然後將meta.json
和tables
資料夾移至一個空的資料夾。這一步驟完成後,空資料夾的結構應該是這樣的:
migration_data ├── meta.json └── tables
將前一步準備好的資料夾上傳到 S3 區塊儲存桶,或在下一節直接使用此本機資料夾。
設定轉移檔案
將範例移轉設定檔案儲存為migration.yaml
,並根據您的實際情況修改設定。您可以將配置檔案放在任何本機目錄中。
dumper:
worker:
limit: 2
workMode: milvus1x
reader:
bufferSize: 1024
writer:
bufferSize: 1024
loader:
worker:
limit: 16
meta:
mode: local
localFile: /outputDir/test/meta.json
source:
mode: local
local:
tablesDir: /db/tables/
target:
mode: remote
remote:
outputDir: "migration/test/xx"
ak: xxxx
sk: xxxx
cloud: aws
region: us-west-2
bucket: xxxxx
useIAM: true
checkBucket: false
milvus2x:
endpoint: "{yourMilvus2_xServerAddress}:{port}"
username: xxxx
password: xxxx
下表描述了示例配置文件中的參數。如需完整的配置清單,請參考Milvus Migration:Milvus1.x 到 Milvus 2.x.
dumper
參數 說明 dumper.worker.limit
轉移線程數。 dumper.worker.workMode
遷移工作的運作模式。從 Milvus 1.x 遷移時設定為 milvus1x
。dumper.worker.reader.bufferSize
每批從 Milvus 1.x 讀取的緩衝區大小。單位:KB:單位:KB。 dumper.worker.writer.bufferSize
每批寫入 Milvus 2.x 的緩衝區大小。單位:KB:單位:KB。 loader
參數 說明 loader.worker.limit
載入器線程數。 meta
參數 說明 meta.mode
指定讀取 meta.json 元檔案的位置。有效值: local
,remote
,mysql
,sqlite
。meta.localFile
meta.json
檔案所在的本機目錄路徑。此設定僅在meta.mode
設定為local
時使用。有關其他 meta 配置,請參閱README_1X。source
參數 說明 source.mode
指定讀取來源檔案的位置。有效值:
-local
: 從本機磁碟讀取檔案。
-remote
: 從遠端儲存讀取檔案。source.local.tablesDir
來源檔案所在的目錄路徑。例如, /db/tables/
。target
參數 說明 target.mode
轉儲檔案的儲存位置。有效值:
-local
: 在本機磁碟上儲存轉儲檔案。
-remote
: 在物件儲存空間上儲存轉儲檔案。target.remote.outputDir
雲端儲存桶中的輸出目錄路徑。 target.remote.ak
Milvus 2.x 儲存的存取金鑰。 target.remote.sk
Milvus 2.x 儲存的密匙。 target.remote.cloud
雲端儲存服務供應商。範例值: aws
,gcp
,azure
。target.remote.region
雲端儲存區域。如果您使用本機 MinIO,它可以是任何值。 target.remote.bucket
儲存資料的 Bucket 名稱。該值必須與 Milvus 2.x 中的配置相同。如需詳細資訊,請參閱系統配置。 target.remote.useIAM
是否使用 IAM 角色進行連接。 target.remote.checkBucket
是否檢查指定的資料桶是否存在於物件儲存空間。 target.milvus2x.endpoint
目標 Milvus 伺服器的位址。 target.milvus2x.username
Milvus 2.x 伺服器的使用者名稱。如果您的 Milvus 伺服器啟用使用者驗證,則必須使用此參數。如需詳細資訊,請參閱啟用驗證。 target.milvus2x.password
Milvus 2.x 伺服器的密碼。如果您的 Milvus 伺服器啟用使用者驗證,則必須使用此參數。如需更多資訊,請參閱啟用驗證。
啟動遷移工作
使用以下命令啟動遷移工作。將
{YourConfigFilePath}
改為配置檔案migration.yaml
所在的本機目錄。./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
上面的命令將 Milvus 1.x 中的源資料轉換成 NumPy 檔案,然後使用bulkInsert操作將資料寫入目標資料桶。
生成 NumPy 檔案後,使用下列指令將這些檔案匯入 Milvus 2.x。將
{YourConfigFilePath}
改為配置檔案migration.yaml
所在的本機目錄。./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
驗證結果
一旦執行轉移任務,您可以呼叫 API 或使用 Attu 檢視轉移的實體數量。如需詳細資訊,請參閱Attu和get_collection_stats()。