在一個儲存桶中的不同實體間遷移 (不同的根路徑)
本主題詳述從一個 Milvus 實例備份資料集,然後還原到另一個實例的過程,同時使用共用資料桶儲存物件,每個實例有不同的根路徑。
概述
下圖說明使用共用資料桶備份和還原的過程。
shared-bucket-backup-and-restore.png
假設我們有兩個 Milvus 實體,milvus_A
和milvus_B
,兩者都使用預設的 MinIO 儲存引擎來儲存物件。這些實體共用相同的儲存桶bucket_A
,但將資料存放在不同的根路徑:files_A
存放在milvus_A
,files_B 存放在milvus_B
。在這個範例中,我們的目標是完成下列任務:
為集合 coll 建立備份 (my_backup),該集合儲存於
files_A
路徑下的milvus_A
。從備份還原,並將其儲存到
milvus_B
的 files_B 中。
先決條件
確保已安裝milvus-backup工具。
熟悉設定 Milvus 物件儲存設定,詳情請參閱物件儲存。
備份集合從milvus_A
步驟 1:準備配置
到 milvus-backup 專案的目錄,建立一個名為 configs 的目錄:
mkdir configs
cd configs
下載備份組態檔案 backup.yaml:
wget https://raw.githubusercontent.com/zilliztech/milvus-backup/main/configs/backup.yaml
檔案結構如下:
├── configs
│ └── backup.yaml
├── milvus-backup
└── README.md
步驟 2:編輯配置檔案
修改 backup.yaml 檔案,為milvus_A
設定適當的配置:
連線 configs
# milvus proxy address, compatible to milvus.yaml milvus: address: milvus_A port: 19530 authorizationEnabled: false # tls mode values [0, 1, 2] # 0 is close, 1 is one-way authentication, 2 is two-way authentication. tlsMode: 0 user: "root" password: "Milvus"
milvus.address
:milvus_A
伺服器的 IP 位址或主機名稱。milvus.port
:Milvus 伺服器聆聽的 TCP 連接埠 (預設 19530)。
儲存設定 (MinIO/S3 設定)
# Related configuration of minio, which is responsible for data persistence for Milvus. minio: # cloudProvider: "minio" # deprecated use storageType instead storageType: "minio" # support storage type: local, minio, s3, aws, gcp, ali(aliyun), azure, tc(tencent) address: milvus_A # Address of MinIO/S3 port: 9000 # Port of MinIO/S3 accessKeyID: minioadmin # accessKeyID of MinIO/S3 secretAccessKey: minioadmin # MinIO/S3 encryption string useSSL: false # Access to MinIO/S3 with SSL useIAM: false iamEndpoint: "" bucketName: "bucket_A" # Milvus Bucket name in MinIO/S3, make it the same as your milvus instance rootPath: "files_A" # Milvus storage root path in MinIO/S3, make it the same as your milvus instance # only for azure backupAccessKeyID: minioadmin # accessKeyID of MinIO/S3 backupSecretAccessKey: minioadmin # MinIO/S3 encryption string backupBucketName: "bucket_A" # Bucket name to store backup data. Backup data will store to backupBucketName/backupRootPath backupRootPath: "backup" # Rootpath to store backup data. Backup data will store to backupBucketName/backupRootPath
minio.bucketName
:用於milvus_A
儲存的儲存桶名稱。在此範例中,設定為bucket_A
。minio.rootPath
:儲存milvus_A
資料的儲存桶根目錄。在本範例中,設定為files_A
。minio.backupBucketName
:用於儲存的儲存桶名稱。在本範例中,milvus_A
和milvus_B
共用一個資料桶。因此,設定為bucket_A
.minio.backupRootPath
:指定用於儲存備份檔案的儲存桶內的根目錄milvus_B
。在本範例中,使用與milvus_A
不同的路徑。因此,設定為backup
。
步驟 3:建立備份
保存backup.yaml
後,建立一個名為 my_backup 的備份:
./milvus-backup create -c coll -n my_backup
此指令會在物件儲存中為集合coll
建立備份bucket_A/backup/my_backup
。
還原備份至milvus_B
步驟 1:設定還原設定
重複步驟 2,修改還原至milvus_B
的設定,確保minio.bucketName
設定為bucket_A
,minio.rootPath
設定為files_B
,以區別兩個實體的儲存位置。
以下是配置範例:
...
# milvus proxy address, compatible to milvus.yaml
milvus:
address: milvus_B
port: 19530
authorizationEnabled: false
# tls mode values [0, 1, 2]
# 0 is close, 1 is one-way authentication, 2 is two-way authentication.
tlsMode: 0
user: "root"
password: "Milvus"
# Related configuration of minio, which is responsible for data persistence for Milvus.
minio:
# cloudProvider: "minio" # deprecated use storageType instead
storageType: "minio" # support storage type: local, minio, s3, aws, gcp, ali(aliyun), azure, tc(tencent)
address: milvus_B # Address of MinIO/S3
port: 9000 # Port of MinIO/S3
accessKeyID: minioadmin # accessKeyID of MinIO/S3
secretAccessKey: minioadmin # MinIO/S3 encryption string
useSSL: false # Access to MinIO/S3 with SSL
useIAM: false
iamEndpoint: ""
bucketName: "bucket_A" # Milvus Bucket name in MinIO/S3, make it the same as your milvus instance
rootPath: "files_B" # Milvus storage root path in MinIO/S3, make it the same as your milvus instance
...
步驟 2:還原備份
還原備份到milvus_B
:
./milvus-backup restore -c coll -n my_backup -s _bak
此命令將備份還原到milvus_B
中名為coll_bak
的新集合中,資料儲存在bucket_A/files_B/insert_log/[ID of new collection]
中。