Project Icon

milvus-backup

Milvus 数据备份恢复开源工具

Milvus-backup 是一款开源的 Milvus 数据备份恢复工具。它通过命令行和 API 服务器接口实现数据操作,在不影响 Milvus 集群性能的前提下执行备份和恢复任务。工具支持简易安装、灵活配置,并提供完整的 API 文档和使用示例,方便用户管理 Milvus 数据。

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-composehelm
bucketNamea-bucketmilvus-bucket
rootPathfilesfile

开发

构建

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 版获得许可。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号