Fazer backup e restaurar dados usando APIs
O Milvus Backup fornece funcionalidades de cópia de segurança e restauro de dados para garantir a segurança dos seus dados Milvus.
Obter o Milvus Backup
Pode descarregar o binário compilado ou construir a partir da fonte.
Para descarregar o binário compilado, vá à página de lançamento, onde pode encontrar todos os lançamentos oficiais. Lembre-se, utilize sempre os binários da versão marcada como Latest.
Para compilar a partir da fonte, faça o seguinte:
git clone git@github.com:zilliztech/milvus-backup.git
go get
go build
Preparar ficheiro de configuração
Descarregue o ficheiro de configuração de exemplo e adapte-o às suas necessidades.
Em seguida, crie uma pasta juntamente com o binário Milvus Backup descarregado ou compilado, dê-lhe o nome de configs
e coloque o ficheiro de configuração dentro da pasta configs
.
A sua estrutura de pastas deve ser semelhante à seguinte:
workspace ├── milvus-backup └── configs └── backup.yaml
Como o Milvus Backup não pode fazer backup de seus dados para um caminho local, certifique-se de que as configurações do Minio estejam corretas ao adaptar o arquivo de configuração.
O nome do bucket padrão do Minio varia de acordo com a maneira como você instala o Milvus. Ao efetuar alterações às definições do Minio, consulte a tabela seguinte.
campo | Docker Compose | Operador do Helm / Milvus |
---|---|---|
bucketName | a-bucket | milvus-bucket |
rootPath | ficheiros | ficheiro |
Iniciar o servidor API
De seguida, pode iniciar o servidor API da seguinte forma:
./milvus-backup server
O servidor API escuta na porta 8080 por defeito. Pode alterá-la, executando-a com a bandeira -p
. Para iniciar o servidor da API que escuta na porta 443, faça o seguinte:
./milvus-backup server -p 443
Você pode acessar a interface do usuário do Swagger usando http://localhost:
Preparar dados
Se executar uma instância local vazia do Milvus à escuta na porta predefinida 19530, utilize os scripts Python de exemplo para gerar alguns dados na sua instância. Sinta-se à vontade para fazer as alterações necessárias nos scripts para atender às suas necessidades.
Obtenha os scripts. Em seguida, execute os scripts para gerar os dados. Certifique-se de que o PyMilvus, o SDK Python oficial do Milvus, foi instalado.
python example/prepare_data.py
Este passo é opcional. Se o saltar, certifique-se de que já tem alguns dados na sua instância Milvus.
Fazer o backup dos dados
Note que a execução do Milvus Backup numa instância do Milvus não afectará normalmente a execução da instância. A sua instância Milvus está totalmente funcional durante a cópia de segurança ou o restauro.
Execute o seguinte comando para criar uma cópia de segurança. Altere collection_names
e backup_name
se necessário.
curl --location --request POST 'http://localhost:8080/api/v1/create' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"backup_name": "my_backup",
"collection_names": [
"hello_milvus"
]
}'
Depois de o comando ser executado, pode listar as cópias de segurança no bucket especificado nas definições do Minio da seguinte forma:
curl --location --request GET 'http://localhost:8080/api/v1/list' \
--header 'Content-Type: application/json'
E baixar os arquivos de backup da seguinte forma:
curl --location --request GET 'http://localhost:8080/api/v1/get_backup?backup_id=<test_backup_id>&backup_name=my_backup' \
--header 'Content-Type: application/json'
Ao executar o comando acima, altere backup_id
e backup_name
para o que foi retornado pela API de listagem.
Agora, pode guardar os ficheiros de cópia de segurança num local seguro para restauro no futuro, ou carregá-los para o Zilliz Cloud para criar uma base de dados de vectores gerida com os seus dados. Para mais detalhes, consulte Migrar do Milvus para o Zilliz Cloud.
Restaurar dados
Pode chamar o comando API restore com uma opção collection_suffix
para criar uma nova coleção restaurando os dados da cópia de segurança. Altere collection_names
e backup_name
se necessário.
curl --location --request POST 'http://localhost:8080/api/v1/restore' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"collection_names": [
"hello_milvus"
],
"collection_suffix": "_recover",
"backup_name":"my_backup"
}'
A opção collection_suffix
permite-lhe definir um sufixo para a nova coleção a ser criada. O comando acima irá criar uma nova coleção chamada hello_milvus_recover na sua instância Milvus.
Se preferir restaurar a coleção com cópia de segurança sem alterar o seu nome, elimine a coleção antes de a restaurar a partir da cópia de segurança. Pode agora limpar os dados gerados em Preparar dados, executando o seguinte comando.
python example/clean_data.py
Em seguida, execute o seguinte comando para restaurar os dados da cópia de segurança.
curl --location --request POST 'http://localhost:8080/api/v1/restore' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"collection_names": [
"hello_milvus"
],
"collection_suffix": "",
"backup_name":"my_backup"
}'
O processo de restauro pode ser demorado, dependendo do tamanho dos dados a serem restaurados. Por conseguinte, todas as tarefas de restauro estão a ser executadas de forma assíncrona. Pode verificar o estado de uma tarefa de restauro executando:
curl --location --request GET 'http://localhost:8080/api/v1/get_restore?id=<test_restore_id>' \
--header 'Content-Type: application/json'
Lembre-se de alterar test_restore_id
para o restaurado pela API de restauração.
Verificar os dados restaurados
Quando a restauração for concluída, você poderá verificar os dados restaurados indexando a coleção restaurada da seguinte forma:
python example/verify_data.py
Observe que o script acima assume que você executou o comando restore
com o sinalizador -s
e que o sufixo está definido como -recover
. Sinta-se à vontade para fazer as alterações necessárias no script para atender às suas necessidades.