Migrar entre instâncias em ambientes S3
Este tópico detalha o processo de fazer o backup de uma coleção de uma instância do Milvus e restaurá-la em outra, com cada instância usando um armazenamento de objetos diferente.
Visão geral
O diagrama abaixo ilustra o processo de cópia de segurança e restauro utilizando diferentes armazenamentos de objectos.
multi-storage-backup-and-restore.png
Suponhamos que temos duas instâncias do Milvus, milvus_A
e milvus_B
, utilizando diferentes armazenamentos de objectos. Neste exemplo, o nosso objetivo é concluir as seguintes tarefas:
Criar uma cópia de segurança (my_backup) para a coleção
coll
embucket_A
do armazenamento de objectos demilvus_A
.Transferir a cópia de segurança my_backup para
bucket_B
do armazenamento de objectos demilvus_B
.
Em bucket_B
, restaurar a partir do backup e nomear a coleção restaurada coll_bak.
Pré-requisitos
Certifique-se de que a ferramenta milvus-backup está instalada.
Familiarize-se com a configuração do armazenamento de objetos do Milvus. Para obter detalhes, consulte Armazenamento de objetos.
Fazer backup de uma coleção do milvus_A
Etapa 1: Preparar a configuração
Vá para o diretório do projeto milvus-backup e crie um diretório chamado configs:
mkdir configs
cd configs
Descarregue o ficheiro de configuração de backup backup.yaml
:
wget https://raw.githubusercontent.com/zilliztech/milvus-backup/main/configs/backup.yaml
A estrutura do ficheiro tem o seguinte aspeto:
├── configs
│ └── backup.yaml
├── milvus-backup
└── README.md
Passo 2: Editar o ficheiro de configuração
Modificar o ficheiro backup.yaml
para definir as configurações apropriadas para milvus_A:
Conexão 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
: Endereço IP ou nome do host do servidor milvus_A.milvus.port
: Porta TCP em que o servidor Milvus está a ouvir (predefinição 19530).
Configurações de armazenamento (definições 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 do contentor utilizado para o armazenamento de dados em milvus_A. Neste exemplo, definido comobucket_A
.minio.rootPath
: Caminho raiz dentro do bucket onde os dados de milvus_A são armazenados. Neste exemplo, defina comofiles
.minio.backupBucketName
: Nome do compartimento utilizado para armazenamento de cópias de segurança. Neste exemplo, definido comobucket_A
.minio.backupRootPath
: Caminho de raiz dentro do contentor designado para armazenar ficheiros de cópia de segurança emmilvus_B
. Neste exemplo, definido parabackup
.
Etapa 3: Criar backup
Depois que backup.yaml for salvo, crie um backup chamado my_backup
:
./milvus-backup create -c coll -n my_backup
Este comando cria a cópia de segurança bucket_A/backup/my_backup
no armazenamento de objectos de milvus_A
.
Transferir manualmente a cópia de segurança para milvus_B
Uma vez que milvus_A
e milvus_B
utilizam um armazenamento de objectos diferente, é necessário transferir manualmente a cópia de segurança do armazenamento de milvus_A e carregá-la para o armazenamento demilvus_B
.
Utilizar a consola do MinIO
Inicie sessão na consola MinIO.
Localize o bucket especificado em minio.address para milvus_A.
Selecione os ficheiros de cópia de segurança no bucket.
Clique em Download para transferir os ficheiros para a sua máquina.
Utilizar o cliente mc
Em alternativa, pode utilizar o cliente mc para transferir os ficheiros de cópia de segurança:
- Configurar um anfitrião MinIO:
# configure a Minio host
mc alias set my_minio https://<minio_endpoint> <accessKey> <secretKey>
- Listar os buckets disponíveis:
# List the available buckets
mc ls my_minio
- Descarregar um bucket recursivamente:
# Download a bucket recursively
mc cp --recursive my_minio/<your-bucket-path> <local_dir_path>
Assim que os ficheiros de cópia de segurança forem transferidos, pode carregá-los para o armazenamento de objectos utilizado por milvus_B
para restauro futuro. Em alternativa, pode carregar a cópia de segurança para o Zilliz Cloud para criar uma base de dados vetorial gerida com os seus dados. Para obter detalhes, consulte Migrar do Milvus para o Zilliz Cloud.
Restaurar a partir da cópia de segurança para milvus_B
Passo 1: Configurar as definições de restauro
Repita a etapa 2 para modificar as configurações para restauração para milvus_B
, garantindo que minio.bucketName
esteja definido como bucket_B
.
Aqui está um exemplo de configuração:
# 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: Restaurar a partir da cópia de segurança
Restaure o backup para milvus_B
:
./milvus-backup restore -c coll -n my_backup -s _bak
Este comando restaura a cópia de segurança para uma nova coleção denominada coll_bak emmilvus_B
, com dados armazenados em bucket_B/files/insert_log/[ID of new collection]
no armazenamento de objectos de milvus_B
.