Migrare tra istanze in ambienti S3
Questo argomento illustra il processo di backup di una raccolta da un'istanza di Milvus e il suo ripristino in un'altra istanza, con ciascuna istanza che utilizza uno storage di oggetti diverso.
Panoramica
Il diagramma seguente illustra il processo di backup e ripristino utilizzando diversi archivi di oggetti.
multi-storage-backup-and-restore.png
Si supponga di avere due istanze Milvus, milvus_A
e milvus_B
, che utilizzano diversi archivi di oggetti. In questo esempio, l'obiettivo è completare le seguenti operazioni:
Creare un backup (my_backup) per la collezione
coll
inbucket_A
dell'archivio oggetti dimilvus_A
.Trasferire il backup my_backup in
bucket_B
dell'archivio oggetti dimilvus_B
.
In bucket_B
, ripristinare dal backup e nominare la collezione ripristinata coll_bak.
Prerequisiti
Assicurarsi che lo strumento milvus-backup sia installato.
Familiarizzare con la configurazione delle impostazioni di archiviazione degli oggetti di Milvus. Per i dettagli, consultare Archiviazione degli oggetti.
Eseguire il backup di una raccolta da milvus_A
Passo 1: Preparare la configurazione
Andare nella directory del progetto milvus-backup e creare una directory denominata configs:
mkdir configs
cd configs
Scaricare il file di configurazione di backup backup.yaml
:
wget https://raw.githubusercontent.com/zilliztech/milvus-backup/main/configs/backup.yaml
La struttura del file è la seguente:
├── configs
│ └── backup.yaml
├── milvus-backup
└── README.md
Passo 2: modificare il file di configurazione
Modificare il file backup.yaml
per impostare le configurazioni appropriate per milvus_A:
Connection 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
: Indirizzo IP o nome host del server milvus_A.milvus.port
: Porta TCP su cui il server Milvus è in ascolto (default 19530).
Configurazioni di archiviazione (impostazioni 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
: Nome del bucket utilizzato per l'archiviazione dei dati in milvus_A. In questo esempio, è impostato subucket_A
.minio.rootPath
: Percorso principale all'interno del bucket in cui sono memorizzati i dati di milvus_A. In questo esempio, impostato sufiles
.minio.backupBucketName
: Nome del bucket utilizzato per l'archiviazione di backup. In questo esempio, impostato subucket_A
.minio.backupRootPath
: Percorso radice all'interno del bucket designato per l'archiviazione dei file di backup inmilvus_B
. In questo esempio, impostato subackup
.
Passo 3: Creare il backup
Una volta salvato backup.yaml, creare un backup denominato my_backup
:
./milvus-backup create -c coll -n my_backup
Questo comando crea il backup bucket_A/backup/my_backup
nell'archivio oggetti di milvus_A
.
Trasferire manualmente il backup a milvus_B
Poiché milvus_A
e milvus_B
utilizzano uno storage di oggetti diverso, è necessario scaricare manualmente il backup dallo storage di milvus_A e caricarlo sullo storage dimilvus_B
.
Uso della console MinIO
Accedere alla console di MinIO.
Individuare il bucket specificato in minio.address per milvus_A.
Selezionare i file di backup nel bucket.
Fare clic su Download per scaricare i file sul computer.
Utilizzo del client mc
In alternativa, è possibile utilizzare il client mc per scaricare i file di backup:
- Configurare un host MinIO:
# configure a Minio host
mc alias set my_minio https://<minio_endpoint> <accessKey> <secretKey>
- Elencare i bucket disponibili:
# List the available buckets
mc ls my_minio
- Scaricare un bucket in modo ricorsivo:
# Download a bucket recursively
mc cp --recursive my_minio/<your-bucket-path> <local_dir_path>
Una volta scaricati i file di backup, è possibile caricarli nell'object storage utilizzato da milvus_B
per un futuro ripristino. In alternativa, è possibile caricare il backup su Zilliz Cloud per creare un database vettoriale gestito con i propri dati. Per ulteriori informazioni, consultare Migrazione da Milvus a Zilliz Cloud.
Ripristino dal backup a milvus_B
Passo 1: Configurare le impostazioni di ripristino
Ripetere il passo 2 per modificare le configurazioni per il ripristino su milvus_B
, assicurandosi che minio.bucketName
sia impostato su bucket_B
.
Ecco un esempio di configurazione:
# 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
Passo 2: Ripristino dal backup
Ripristinare il backup in milvus_B
:
./milvus-backup restore -c coll -n my_backup -s _bak
Questo comando ripristina il backup in una nuova raccolta denominata coll_bak inmilvus_B
, con i dati archiviati in bucket_B/files/insert_log/[ID of new collection]
all'interno dello storage degli oggetti di milvus_B
.