跨 S3 環境的實體間遷移
本主題詳述從一個 Milvus 實例備份資料集,並將其還原到另一個實例的過程,每個實例使用不同的物件儲存。
概述
下圖說明使用不同物件儲存的備份和還原程序。
multistorage-backup-and-restore.png
假設我們有兩個使用不同物件儲存空間的 Milvus 實體milvus_A
和milvus_B
。在這個範例中,我們的目標是完成下列任務:
為
milvus_A
的物件儲存bucket_A
中的集合coll
建立備份 (my_backup)。將備份 my_backup 傳輸到
milvus_B
的bucket_B
。
在bucket_B
中,從備份還原,並將還原的集合命名為 coll_bak。
先決條件
確保已安裝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: minio_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" # 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
。minio.backupBucketName
:用於備份儲存的儲存桶名稱。在本範例中,設定為bucket_A
。minio.backupRootPath
:指定用於儲存備份檔案的儲存桶內的根目錄milvus_B
。 在此範例中,設定為backup
。
步驟 3:建立備份
儲存 backup.yaml 後,建立一個名為my_backup
的備份:
./milvus-backup create -c coll -n my_backup
此指令會在milvus_A
的物件儲存空間中建立備份bucket_A/backup/my_backup
。
手動傳輸備份到 milvus_B
由於milvus_A
和milvus_B
使用不同的物件儲存空間,您需要手動從 milvus_A 的儲存空間下載備份,然後上傳到milvus_B
的儲存空間。
使用 MinIO 主控台
登入 MinIO 主控台。
找到 minio.address 中為 milvus_A 指定的儲存桶。
選取儲存桶中的備份檔案。
按一下「下載」,將檔案下載到您的電腦。
使用 mc 用戶端
您也可以使用mc 用戶端下載備份檔案:
- 設定 MinIO 主機:
# configure a Minio host
mc alias set my_minio https://<minio_endpoint> <accessKey> <secretKey>
- 列出可用的儲存桶:
# List the available buckets
mc ls my_minio
- 以遞迴方式下載儲存桶:
# Download a bucket recursively
mc cp --recursive my_minio/<your-bucket-path> <local_dir_path>
下載備份檔案後,您可以將檔案上傳至milvus_B
使用的物件儲存空間,以便日後還原。或者,您也可以將備份上傳至Zilliz Cloud,以您的資料建立受管理的向量資料庫。詳情請參閱從 Milvus 遷移到 Zilliz Cloud。
從備份還原到 milvus_B
步驟 1:設定還原設定
重複步驟 2,修改還原至milvus_B
的設定,確保minio.bucketName
設定為bucket_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: minio_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_B" # Milvus Bucket name in MinIO/S3, make it the same as your milvus instance
rootPath: "files" # 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_B" # 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
步驟 2:從備份還原
還原備份到milvus_B
:
./milvus-backup restore -c coll -n my_backup -s _bak
此命令將備份還原到milvus_B
中名為 coll_bak 的新集合中,資料儲存在milvus_B
的物件儲存空間內的bucket_B/files/insert_log/[ID of new collection]
中。