milvus-logo
LFAI
首页
  • 工具

使用 API 备份和恢复数据

Milvus 备份提供数据备份和恢复功能,以确保您的 Milvus 数据安全。

获取 Milvus 备份

您可以下载编译后的二进制文件,也可以从源代码中构建。

要下载编译后二进制文件,请访问发布页面,在那里可以找到所有正式发布的版本。记住,一定要使用标记为最新的版本中的二进制文件。

从源代码编译的步骤如下:

git clone git@github.com:zilliztech/milvus-backup.git
go get
go build

准备配置文件

下载示例配置文件,并根据自己的需要进行调整。

然后在下载或构建的 Milvus Backup 二进制文件旁创建一个文件夹,将文件夹命名为configs ,并将配置文件放在configs 文件夹中。

你的文件夹结构应与下面相似:

工作区 ├── milvus-backup └── configs └── backup.yaml

由于 Milvus Backup 无法将数据备份到本地路径,因此在定制配置文件时要确保 Minio 设置正确。

默认 Minio 存储桶的名称因安装 Milvus 的方式而异。更改 Minio 设置时,请参阅下表。

字段Docker ComposeHelm / Milvus Operator
bucketNamea-bucketmilvus-bucket
rootPath文件文件

启动 API 服务器

然后按如下步骤启动 API 服务器:

./milvus-backup server

API 服务器默认侦听 8080 端口。您可以通过使用-p 标志运行来更改端口。要启动通过 443 端口监听的 API 服务器,请执行以下操作:

./milvus-backup server -p 443

您可以使用 http://localhost 访问 Swagger UI:/api/v1/docs/index.html。

准备数据

如果你运行一个空的本地 Milvus 实例,监听默认端口 19530,请使用示例 Python 脚本在你的实例中生成一些数据。请根据自己的需要对脚本进行必要的修改。

获取脚本。然后运行脚本生成数据。确保已安装 Milvus 官方Python SDKPyMilvus

python example/prepare_data.py

这一步是可选的。如果跳过这一步,请确保您的 Milvus 实例中已经有一些数据。

备份数据

请注意,针对 Milvus 实例运行 Milvus 备份通常不会影响实例的运行。在备份或还原期间,你的 Milvus 实例是完全正常的。

运行以下命令创建备份。如有必要,请更改collection_namesbackup_name

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"
  ]
}'

执行命令后,您可以在 Minio 设置中指定的存储桶中列出备份,如下所示:

curl --location --request GET 'http://localhost:8080/api/v1/list' \
--header 'Content-Type: application/json'

并按如下方式下载备份文件:

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'

运行上述命令时,将backup_idbackup_name 更改为列表 API 返回的值。

现在,您可以将备份文件保存到安全的地方,以便将来还原,或者将其上传到Zilliz Cloud,用您的数据创建受管向量数据库。有关详情,请参阅从 Milvus 迁移到 Zilliz Cloud

还原数据

您可以调用带有collection_suffix 选项的还原 API 命令,通过还原备份数据来创建新的集合。如有必要,请更改collection_namesbackup_name

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"
}'

collection_suffix 选项允许您为要创建的新集合设置后缀。上述命令将在 Milvus 实例中创建一个名为hello_milvus_recover的新数据集。

如果你希望在不更改名称的情况下恢复备份的数据集,请在从备份恢复之前删除该数据集。现在,您可以运行以下命令清理在 "准备数据"中生成的数据。

python example/clean_data.py

然后运行以下命令从备份中还原数据。

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"
}'

还原过程可能很耗时,这取决于要还原的数据大小。因此,所有还原任务都是异步运行的。您可以通过运行以下命令检查还原任务的状态:

curl --location --request GET 'http://localhost:8080/api/v1/get_restore?id=<test_restore_id>' \
--header 'Content-Type: application/json'

切记将test_restore_id 更改为通过还原 API 还原的数据。

验证还原的数据

还原完成后,可以按如下方法为还原的数据集编制索引,以验证还原的数据:

python example/verify_data.py

请注意,上述脚本假定您在运行restore 命令时使用了-s 标志,且后缀设置为-recover 。请根据需要对脚本进行必要的修改。

翻译自DeepLogo

反馈

此页对您是否有帮助?