Milvus-backup
Milvus-Backup 是一个允许用户备份和恢复 Milvus 数据的工具。该工具可以通过命令行或 API 服务器使用。
Milvus-backup 过程对 Milvus 的性能影响微乎其微。在备份和恢复过程中,Milvus 集群可以完全正常运行。
安装
- 从发布页面下载二进制文件。通常建议使用最新版本。
对于 Mac:
- 使用 homebrew 安装
brew install zilliztech/tap/milvus-backup
配置
要使用 Milvus-Backup,需要访问 Milvus 代理和 Minio 集群。可以在 backup.yaml
中编辑与此访问相关的配置设置。
注意
请确保 Minio 的配置设置准确无误。根据 Milvus 的部署方式(docker-compose 或 k8s),Minio 配置的默认值可能会有所不同。
请注意,无法将数据备份到本地路径。备份数据存储在 Minio 或您的 Milvus 实例使用的其他对象存储解决方案中。
字段 docker-compose helm bucketName a-bucket milvus-bucket rootPath files file
开发
构建
go get
go build
将在项目目录中生成一个可执行的二进制文件 milvus-backup
。
测试
开发人员也可以使用 IDE 进行测试。core/backup_context_test.go
包含所有主要接口的测试示例。或者,您可以使用命令行界面进行测试:
cd core
go test -v -test.run TestCreateBackup
API 服务器
构建后,使用以下命令启动 RESTAPI 服务器:
./milvus-backup server
服务器默认监听 8080 端口。但是,您可以使用 -p
参数更改端口,如下所示:
./milvus-backup server -p 443
swagger UI
我们提供了 Swagger UI 的访问,显示我们 API 的全面信息。要查看它,只需访问
http://localhost:8080/api/v1/docs/index.html
API 参考
/create
为集群创建备份。所选集合的数据将被复制到备份目录。您可以指定要备份的一组集合名称,如果留空(默认),将备份所有集合。
curl --location --request POST 'http://localhost:8080/api/v1/create' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"backup_name": "test_backup",
"collection_names": [
"test_collection1","test_collection2"
]
}'
/list
列出 MinIO 中 backup
目录中存在的所有备份。
curl --location --request GET 'http://localhost:8080/api/v1/list' \
--header 'Content-Type: application/json'
/get_backup
通过名称检索备份。
curl --location --request GET 'http://localhost:8080/api/v1/get_backup?backup_name=test_backup' \
--header 'Content-Type: application/json'
/delete
通过名称删除备份。
curl --location --request DELETE 'http://localhost:8080/api/v1/delete?backup_name=test_api' \
--header 'Content-Type: application/json'
/restore
通过名称恢复备份。它在集群中重新创建集合,并通过批量插入恢复数据。有关批量插入的更多详细信息,请参阅: https://milvus.io/docs/bulk_insert.md
批量插入将按分区进行。目前不支持并发批量插入。
curl --location --request POST 'http://localhost:8080/api/v1/restore' \
--header 'Content-Type: application/json' \
--data-raw '{
"async": true,
"collection_names": [
"test_collection1"
],
"collection_suffix": "_bak",
"backup_name":"test_backup"
}'
/get_restore
这仅在 REST API 中可用。通过 ID 检索恢复任务信息。我们在 REST API 中支持异步恢复,您可以使用此方法获取恢复执行状态的信息。
curl --location --request GET 'http://localhost:8080/api/v1/get_restore?id=test_restore_id' \
--header 'Content-Type: application/json'
命令行
Milvus-backup 基于 cobra 建立 CLI。使用以下命令查看用法。
milvus-backup 是 milvus 的备份和恢复工具。
用法:
milvus-backup [flags]
milvus-backup [command]
可用命令:
check 检查连接是否正确。
create create 子命令创建备份。
delete delete 子命令通过名称删除备份。
get get 子命令通过名称获取备份。
help 关于任何命令的帮助
list list 子命令显示集群中的所有备份。
restore restore 子命令恢复备份。
server server 子命令启动 milvus-backup RESTAPI 服务器。
标志:
--config string milvus 的配置 YAML 文件(默认为 "backup.yaml")
-h, --help milvus-backup 的帮助
使用 "milvus-backup [command] --help" 获取有关命令的更多信息。
演示
要尝试此演示,您应该安装了功能正常的 Milvus 服务器,并安装了 pymilvus 库。
步骤 0:检查连接
首先,我们可以使用 check
命令检查与 milvus 和存储的连接是否正常:
./milvus-backup check
正常输出:
成功连接到 milvus 和存储。
Milvus 版本:v2.3
存储:
milvus-bucket:a-bucket
milvus-rootpath:files
backup-bucket:a-bucket
backup-rootpath:backup
步骤 1:准备数据
使用以下命令在 Milvus 中创建一个名为 hello_milvus
的集合并插入一些数据:
python example/prepare_data.py
步骤 2:创建备份
使用以下命令创建 hello_milvus
集合的备份:
./milvus-backup create -n my_backup
步骤 3:恢复备份
使用以下命令恢复备份:
./milvus-backup restore -n my_backup -s _recover
这将创建一个名为 hello_milvus_recover
的新集合,其中包含原始集合的数据。
**注意:**如果您也想恢复索引,请添加 --restore_index
,如下所示:
./milvus-backup restore --restore_index -n my_backup -s _recover
这将帮助您同时恢复数据和索引。如果不添加此标志,您需要手动恢复索引。
步骤 4:验证恢复的数据
使用以下命令在恢复的集合上创建索引:
python example/verify_data.py
这将在 hello_milvus_recover
集合上执行搜索,并验证恢复的数据是否正确。
就是这样!您已成功备份和恢复了 Milvus 集合。
许可证
milvus-backup 根据 Apache License 2.0 版获得许可。