Milvus向量数据库-数据备份与恢复

前言

随着Milvus版本的持续迭代,越来越多的用户将其作为构建生产环境的向量数据服务使用。作为数据服务使用,其中的运维、数据安全、容灾备份自然是用户最关心且不容有失的需求。为解决这一需求,Milvus-backup项目工具应运而生。

Milvus-bakcup是Zilliz专门为Milvus向量数据库开发的数据备份与恢复的工具。它不同于Milvus向量数据库Attu图形管理工具和ANN算法可视化工具Feder。

下面会具体介绍Milvus-backup工具的使用方法。

一、Mi lvus-backup 工具功能简介

Milvus-backup工具支持以下工作能力:

1.支持命令行和Restful API的多种交互方式;

2.支持热备份,对Milvus集群运行几乎没有影响;

3.支持集群全量备份和指定collection(集合)备份;

4.可通过bulkinsert实现备份与恢复,并可以恢复时重命令collection(集合);

5.支持S3,支持跨bucket备份,可以实现集群间迁移;

6.支持Milvus2.2.0+的版本;

7.目前只支持备份数据,不备份索引数据;

二、Milvus-backup工具设计思路

2 .1 、Milvus -backup 的编程语言

Milvus-backup是使用go语言实现的,部分逻辑直接拷贝 Milvus 源码,保证最大程度的兼容性和操作习惯的一致性。

2 .2 、Milvus -backup 工具的交互方式

Milvus-bakcup支持多种交互使用方法,如下:

2.2. 1、命令行方式

考虑备份工具使用的主要用户,是对Milvus的运维开发人员,命令行是最简便直接的使用方式,Milvus-backup基于cobra框架实现了命令行。

2 .2.2 、Restfu l API 方式

Milvus-backup 还提供 Restful API,便于工具服务化,并提供了友好的 Swagger UI。

Milvus-backup主要包含以下接口,分别是备份(backup)和恢复(restore)的主要操作:

备份(b ackup ):

1.CreateBackup

2.GetBackup

3.ListBackups

4.DeleteBackup

恢复(restore) :

1.RestoreBackup

2.GetRestore

详情可参考:Milvus-bakcup

2.2. 3、Go module 方式

因为Milvus-backup工具是go语言开发的,所以还可以作为go module集成到其他工具之中。例如,未来我们会提供all in one的Milvus工具箱,将包括Milvus-backup在内的运维工具一起打包。

三、实现原理

熟悉Milvus向量数据库的运维人员都知道,Milvus目前使用 etcd存储元数据的(以下称为 metadata),使用对象存储(minio、S3 等)存储真实数据(以下称为 storage)。

未来,Milvus可能会支持更多的存储介质,如 MySQL、Alluxio、HDFS 等,在设计上要考虑兼容性。

因此本次我们采用备份与恢复的方案是:

1 、备份环节

Metadata不直接调用etcd接口,而是通过Milvus SDK获取必要信息,存储到自定义的backup metadata文件中,backup metadata使用json格式,便于观察和适配;

storage通过调用存储SDK直接复制数据到指定路径,备份数据和原数据几乎保持相同路径结构,降低理解成本。

在备份的时候,工具会调用Milvus的flush接口来获得备份的快照时间戳,这是备份环节唯一会影响Milvus集群的地方,但影响很小。

2、恢复环节

不直接操作metadata和storage,而是调用Milvus SDK重新创建collection,通过2.2.0新推出的bulkinsert功能,将数据批量插入到新建collection中,因此逻辑上备份恢复得到的是一张新表,只不过与原表数据内容一致。

四、操作方法

熟悉了以上对Milvus-backup工具的介绍后,可以对其进行实操了。

因为Milvus-backup工具是go语言开发的,所以该工具有2种方式安装:源码编译和二进制。

在安装Milvus-backup工具之前,需要准备好Milvus向量数据库,具体安装方法可以参照之前写的:安装Milvus向量数据库

注:本次的操作是对milvus单机模式进行的备份与恢复操作方法,集群的方法还在研究中。

4 .1 、Milvus -backup 工具安装

本次安装我采用的是二进制的安装方法,如果大家不想用二进制方法安装,可以选择源码编译的方法进行安装配置。

如果采用源码编译的方法进行安装的话,需要先配置go环境,再使用go进行编译,具体可以查看本文最后:第六节中的源码安装milvus-backup。

4 .1.1 、M ilvus - backup 工具下载

Milvus-backup工具地址:https://github.com/zilliztech/milvus-backup/releases

大家一定要根据自己的Milvus向量数据库版本去选择Milvus-backup工具的对应版本,如果版本选择不对的话,在进行备份或恢复时,会有失败的的情况发生。

下面是针对Milvus-backup工具版本对应的Milvus向量数据库版本的对应选择。

|------------------|-------------------|
| Milvus向量数据库版本 | Milvus-backup工具版本 |
| v2.3.0 and above | v0.4.0 and above |
| v2.2.9 and above | v0.3.0 and above |
| v2.2.0 to v2.2.8 | v0.1.0 to v0.2.2 |

我自己的Milvus向量数据库为:2.3.20版本,我分别选择了Milvus-backup的0.4.20和0.4.21。

下载时要同时下载二进制文件和源码文件,彩用的是二进制方法安装,为什么要还要下载源码文件呢?因为使用milvus-backup工具进行备份或恢复时,需要一个backup.yaml的配置文件,二进制包中没有该配置文件。

还有一个相对来说比较重要的就是,建好milvus向量数据库,如果没有创建collection可以使用源码包example目录下写好的python程序,prepare_data.py(准备数据)、clean_data.py(清理数据)、verify_data.py(验证数据)进行数据的生产,不需要自己再写一遍程序进行数据准备等工作。

如下图是milvus-backup工具的安装包,大家可以根据自己主机的情况选择对应的安装包即可。

4 .1.2 、解压m ilvus-backup

解压之前,要先创建milvus-backup的工作目录和日志目录,这个大家可以根据自己实际情况进行自定义。

[iwen@jina-milvus 0.4.20]$ mkdir -pv /iwen/milvus-backup

[iwen@jina-milvus 0.4.20]$ mkdir -pv /iwen/milvus-backup/logs

[iwen@jina-milvus 0.4.20]$ tar -xf milvus-backup_Linux_x86_64.tar.gz

解压出来会有3个文件,分别为:milvus-bakcup、LICENSE、README.md,把milvus-backup文件移动到新建目录中。

[iwen@jina-milvus 0.4.20]$ mv milvus-bakcup /iwen/milvus-backup

再解压milvus-backup源码文件。

[iwen@jina-milvus 0.4.20]$ unzip milvus-backup-0.4.20.zip

[iwen@jina-milvus 0.4.20]$ cd milvus-backup-0.4.20

移动或复制configs目录到新建目录/iwen/milvus-backup下。

[iwen@jina-milvus milvus-backup-0.4.20]$ mv configs /iwen/milvus-backup

4 .1.3 、修改 backup.yaml 文件

修改之前进行一下备份,以免修改出问题,容易对配置文件进行恢复。

[iwen@jina-milvus configs]$ cp backup.yaml backup.yaml.YYYYMMDD

YYYYMMDD代表年月日

[iwen@jina-milvus configs]$ vi backup.yaml

找到下面标红的参数

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # Configures the system log output. log: level: info # Only supports debug, info, warn, error, panic, or fatal. Default 'info'. console: true # whether print log to console file: rootPath: "logs/backup.log" http: simpleResponse: true # milvus proxy address, compatible to milvus.yaml milvus: address: localhost 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: localhost # 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: "a-bucket" # 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: "milvus-hello" # Bucket name to store backup data. Backup data will store to backupBucketName/backupRootPath backupRootPath: "mybackup" # Rootpath to store backup data. Backup data will store to backupBucketName/backupRootPath backup: maxSegmentGroupSize: 2G parallelism: # collection level parallelism to backup backupCollection: 4 # thread pool to copy data. reduce it if blocks your storage's network bandwidth copydata: 128 # Collection level parallelism to restore restoreCollection: 2 # keep temporary files during restore, only use to debug keepTempFiles: false # Pause GC during backup through Milvus Http API. gcPause: enable: true seconds: 7200 address: http://localhost:9091 |

address ****:****对应的localhost可以根据自己环境的实际情况进行更改,如果milvus向量数据库所在的主机和milvus-backup在一台主机上就不需要修改,反之修改成milvus向量数据库所在的主机IP。

bucketName rootPath ****:****要根据milvus向量数据库中milvus.yaml配置文件中对应的参数进修改,确保backup.yaml中的这2个参数要和milvus.yaml一致。

如果这2个参数不一致的话,会遇到备份恢复的collection只有metadata,没有数据的问题。

这两个参数,在不同的部署模式中,默认值是不同的,具体差异见下表:

|------------|----------------|----------------------|
| filed | Docker Compose | Helm/milvus operator |
| bucketName | a-bucket | milvus-bucket |
| rootPath | files | file |

backupBucketName ****:****代表备份文件的名字,可以根据需要进行修改。

backupRootPath: 代表备份文件所在的目录,可以根据需要进行修改。

注:如果想要提高数据的备份与恢复效率,可以在"parallelism"小节点中调整相应的参数。

4 .1.4 、ch eck 配置初检查

[iwen@jina-milvus milvus-backup]$ ./milvus-backup check

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [iwen@jina-milvus milvus-backup]$ ./milvus-backup check 0.4.21 (Built on 2024-08-22T04:00:46Z from Git SHA 760ea2c7e05992e1f0f01c9b7a98aee2796b90cb) config:backup.yaml [2024/08/28 14:37:22.869 +08:00] [INFO] [logutil/logutil.go:165] ["Log directory"] [configDir=] [2024/08/28 14:37:22.869 +08:00] [INFO] [logutil/logutil.go:166] ["Set log file to "] [path=logs/backup.log] [2024/08/28 14:37:23.021 +08:00] [INFO] [storage/minio_chunk_manager.go:144] ["minio chunk manager init success."] [bucketname=a-bucket] [root=files] [2024/08/28 14:37:23.039 +08:00] [INFO] [storage/minio_chunk_manager.go:144] ["minio chunk manager init success."] [bucketname=milvus-hello] [root=mybackup] Succeed to connect to milvus and storage. Milvus version: v2.3.20 Storage: milvus-bucket: a-bucket milvus-rootpath: files backup-bucket: milvus-hello backup-rootpath: mybackup |

标红部分检查出了milvus向量数据库的版本,以及backup.yaml配置文件中修改的备份名称和路径。

4 .1.3 、数据备份

备份时是使用milvus-backup中的create参数进行备份,可以使用help来查看数据备份的帮助。

[iwen@jina-milvus milvus-backup]$ ./milvus-backup create --help

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [iwen@jina-milvus milvus-backup]$ ./milvus-backup create --help 0.4.21 (Built on 2024-08-22T04:00:46Z from Git SHA 760ea2c7e05992e1f0f01c9b7a98aee2796b90cb) create subcommand create a backup. Usage: milvus-backup create [flags] Flags: -n, --name string backup name, if unset will generate a name automatically -c, --colls string collectionNames to backup, use ',' to connect multiple collections -d, --databases string databases to backup -a, --database_collections string databases and collections to backup, json format: {"db1":["c1", "c2"],"db2":[]} -f, --force force backup, will skip flush, should make sure data has been stored into disk when using it --meta_only only backup collection meta instead of data --rbac whether backup RBAC meta -h, --help help for create Global Flags: --config string config YAML file of milvus (default "backup.yaml") --set strings Override yaml values using a capitalized snake case format (--set MILVUS_USER=Marco) |

[iwen@jina-milvus milvus-backup]$ ./milvus-backup create -n backup_name -c database.collection

-n:代表备份的名称,可以根据情况进行命名

-c:你表要备份哪个collection,需要注意的是,如果Milvus向量数据库中有多个数据库,备份collection要指出要备份哪个数据库中的哪个集合,如果不指定,会默认备份default为中的集合,此时会报出如下错误:

图中标红部分就是我要备份iwen这个集合,但它属于另一个库(test),没有指定库名,备份报错。如果指明哪个库,会备份成功,如下所示:

备份完成之后,一定要查看一下图中标蓝部份,看看没有ERROR信息,如果有,说明备份有错,且备份是失败的。

如果当时没有看这些信息,也可以通过查看milvus-bakcup的日志进行查看。目录所在目录是:/iwen/milvus-backup/logs

此时可以到对应的目录下看看自己的备份文件是否生成,查看方式有2种,下面会分别介绍一下:

第1种方法:在操作系统上进行查看

找到milvus向量数据库所安装位置(数据存放位置),进入到minio目中进行查看,如下所示:

[root@jina-milvus volumes]# pwd

/iwen/milvus/2.3.20/volumes

这是我自己的安装路径(数据存放位置),大家可以根据自己的实际情况进行查看。

[root@jina-milvus volumes]# cd minio

我在backup.yaml配置文件中配置的备份名称和备份路径分别为:milvus-hello和mybackup,所以可以看到备分文件已经生成,如下:

[root@jina-milvus mybackup]# pwd

/iwen/milvus/2.3.20/volumes/minio/milvus-hello/mybackup

[root@jina-milvus mybackup]# ls -lrt iwen_backup_20240827

总用量 0

drwxr-xr-x 3 root root 24 8月 28 14:52 binlogs

drwxr-xr-x 8 root root 160 8月 28 14:52 meta

iwen_backup_20240827这是刚才备份时,对备份文件的名字,该目录下生成了binlogs和meta数据目录,说明备份文件已生成。

如果忘记了自己的备份名字,也可以使用milvus-backup命令进行查看,如下:

[iwen@jina-milvus milvus-backup]$ ./milvus-backup list

图中标红部分就是查看备份文件命令和生成的备份文件。

2 种方法:使用m inio console 进行查看

一般启动milvus向量数据库后,会自动把minio console启动起来,可以使用ps命令进行查看。

[root@jina-milvus milvus-backup]# ps -ef|grep minio

root 20619 20591 12 07:50 ? 00:52:54 minio server /minio_data --console-address :9001

可以使用浏览器直接访问http://ip:9001进行访问查看,该平台的默认用户名和密码为:minioadmin。如下图所示:

登录进去之后,默认会打开备份文件浏览页,找到backup.yaml中backupBucketName对应的值。

点击milvus-hello可以查看备份信息,找到backup.yaml中backupRootPath对应的值。

点击mybackup可以查看该备份目录下所有的备份,找到自己备份时对备份文件命名的名称,点击进入。

图中标红部分,就是我刚才的备份文件,点击进去可以查看。

binlogs目录下存放的是备份数据,这里的数据文件是data类型。

meta目录下存放的是meta元数据,可以查看备份的信息,这里都是json格式的文件,大家可以下载下来进行查看。

到此为止,备份数据和查看备份数据的方法已全部完成,接下来就是要对备份的数据进行恢复了。

4 .1.4 、数据恢复

恢复数据我们使用的是restore这个参数命令,可以使用--help查看帮助信息。

[iwen@jina-milvus milvus-backup]$ ./milvus-backup restore --help

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [root@jina-milvus milvus-backup]# ./milvus-backup restore --help 0.4.21 (Built on 2024-08-22T04:00:46Z from Git SHA 760ea2c7e05992e1f0f01c9b7a98aee2796b90cb) restore subcommand restore a backup. Usage: milvus-backup restore [flags] Flags: -n, --name string backup name to restore -c, --collections string collectionNames to restore -s, --suffix string add a suffix to collection name to restore -r, --rename string rename collections to new names, format: db1.collection1:db2.collection1_new,db1.collection2:db2.collection2_new -d, --databases string databases to restore, if not set, restore all databases -a, --database_collections string databases and collections to restore, json format: {"db1":["c1", "c2"],"db2":[]} --meta_only if true, restore meta only --restore_index if true, restore index --use_auto_index if true, replace vector index with autoindex --drop_exist_collection if true, drop existing target collection before create --drop_exist_index if true, drop existing index of target collection before create --skip_create_collection if true, will skip collection, use when collection exist, restore index or data --rbac whether restore RBAC meta -h, --help help for restore Global Flags: --config string config YAML file of milvus (default "backup.yaml") --set strings Override yaml values using a capitalized snake case format (--set MILVUS_USER=Marco) |

如果对数据进行恢复时,想把对应的索引也一并创建好,需要把--restore_index这个参数加上。

[iwen@jina-milvus milvus-backup]$ ./milvus-backup restore --restore_index -n backup_name -s _recover

backup_name:代表备份的文件名称,如果忘记备份名称,可以使用milvus-backup list命令进行查看

-s:代表恢复数据时,为集合创建一个新的名字,并且这个名字是以_recover命名的。也可以根据自己的实际情况进行命名。

注:如果想把原collection恢复,恢复前需要把之前备份的collection进行删除或是重命名。大家可以根据自身的实际使用情况进行方法的选择。

如下图所示,是恢复数据的结果:

一定要关注最后的结果是否是success和图中标蓝部分,有没有ERROR错误信息。恢复日志同样存在/iwen/milvus-backup/logs目录下。

这里为了看的方便直接,我这里使用的Attu图形工具查看的恢复情况。

大家也可以用自己写的Python程序进行新旧数据的对比,如果不想自己写,可以使用milvus-backup源码example中的verify_data.py进行数据对比。

但是要注意,如果想用milvus-backup源码example中的verify_data.py进行数据对比的话,一定要先看一下该程序内容,如:字段、库、collection、索引等相关信息是否和自己创建的一样。

Attu图形工具查看:

原:

恢复后:

从恢复的情况来看,字段、索引和数据量个数一样。但为什么状态不一样呢,原数据是"已加载",恢复的是"未加载",这是因为数据目前还在存在内存中,还没有落盘,落盘后,状态就变为"已加载"了,此时需要利用python代码把该数据从内存中进行落盘,也可以利用Attu这个图形工具,点击"未加载"进行数据落盘,在日常的工作中要使用python代码进行落盘操作,就是数据恢复完之后,要进行一次python代码落盘的操作。

4.1.5 、m ilvus-backup 0.4.21 版本问题

如果大家使用的是milvus-backup 0.4.21版本,这个版本经过自己测试使用,在进行数据恢复时,无法正常进行数据恢复,如下图标红部分:

在进行数据恢复时,报出了ERROR的错误,从日志中发现,根据备份的binlogs中的文件进行数据插入时,无法找到对应的目录,经过分析查看,恢复把文件所在的目录ID合并成了一个,找不到文件造成。

真实文件目录结构,如下图所示:

milvus-backup 0.4.21版本,把图中标蓝色部分的最后2级目录合并成一个造成数据无法恢复。

到此为止,利用milvus-bakcup工具对milvus向量数据库的数据进行备份与恢复过程已验证完成。

五、 Restful API 操作方式

Milvus-backup工具除了提供命令行操作外,还提供了一套完成的Restful API调用的方式。

不管是二进制安装,还是源码编译安装,解压出的包都会包含一个README.md帮助文档,这里面提供了如何使用Restful API的方式去完成Milvus向量数据的备份与恢复。

同时Milvus-backup还提供了Swagger UI方式查看Restful API接口和参数的方式,下面分别对这2种方式进行介绍:

第1种:通过 README.md 帮助文档查看

[iwen@jina-milvus milvus-backup]$ vi README.md

找到API Reference小节,如下图所示:

1、备份相关:

create:数据备份

list:查看所有备份文件

get_bakcup:按名称检索备份文件

delete:按名称删除备份文件

2、恢复相关:

restore:按备份文件名称进行数据恢复

get_restore:获取数据恢复状态信息

注:接口的"--data-raw"这个参数目前在curl的版本中已经没有该参数了,可以使用"-d"参数来代替。

如果要使用Restful API方式进行数据的备份与恢复,需要把milvus-backup以服务的方式进行启动才能使用,启动方法也在README.md帮助文档中。

启动方法如下:

[iwen@jina-milvus milvus-backup]$ vi README.md

找到API server小节,如下图所示:

如下所示启动Restful API。

[iwen@jina-milvus milvus-backup]$ ./milvus-backup server

Restful API启动后的默认端口为8080,如果不想使用8080,可以使用以下方式启动。

[iwen@jina-milvus milvus-backup]$ ./milvus-backup server -p port

-p:代表启动Restful API时,需要用哪个端口启动,直接在"-p"后面写入想要运行的端口号即可。如想在8090端口下启动:

[iwen@jina-milvus milvus-backup]$ ./milvus-backup server -p 8090

启动milvus-backup的Restful API如下操作:

[iwen@jina-milvus milvus-backup]$ ./milvus-backup server

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [iwen@jina-milvus milvus-backup]$ ./milvus-backup server 0.4.20 (Built on 2024-08-20T02:34:30Z from Git SHA 725052152b2655378f4d42ef2151127ce5e0005b) config:backup.yaml [2024/08/29 09:46:46.988 +08:00] [INFO] [logutil/logutil.go:165] ["Log directory"] [configDir=] [2024/08/29 09:46:46.990 +08:00] [INFO] [logutil/logutil.go:166] ["Set log file to "] [path=logs/backup.log] [2024/08/29 09:46:46.991 +08:00] [INFO] [core/backup_context.go:96] ["{Base:0xc0001fdb80 MaxSegmentGroupSize:2147483648 BackupCollectionParallelism:4 BackupCopyDataParallelism:128 RestoreParallelism:2 KeepTempFiles:false GcPauseEnable:true GcPauseSeconds:7200 GcPauseAddress:http://192.168.10.2:9091}"] [2024/08/29 09:46:46.991 +08:00] [INFO] [core/backup_context.go:97] ["{Base:0xc0001fdb80 Enabled:true DebugMode:false SimpleResponse:true}"] |

启动之后,就可以使用Restful API方式进行备份与恢复了。

2 种:通过 Swagger UI 帮助文档查看

Restful API启动之后,可以按照README.md帮助文档中的API server小节,浏览器地址栏输入:http://192.168.10.2:8080/api/v1/docs/index.html访问即可,该地址是指milvus-backup的Restful API启动所在的主机地址。

如下图所示:

大家想查看某一个接口内的详情信息的话,可以点击某一个接口查看即可,如想查看Backup中/create接口信息:

如果还想查看更详细的接口参数信息,可以在milvus-backup的Swagger UI页的"Models"小组内找到自己想要了解的信息,如想了解backuppb.BackupInfo的相关详细信息,直接点击"backuppb.BackupInfo"功能模块即可。如下图所示:

六、源码安装m ilvus-backup

因milvus-backup是使用go语言开发,因此源码安装milvus-backup时,需要先安装go环境。

6.1 、g o 环境安装配置
6.1.1 、g o 安装包下载

go下载地址:All releases - The Go Programming Language (google.cn)

下面给大家简单介绍一下go的安装过程,供大家学习。可以根据自已环境选择适合自己的版本即可。

此处我选择的是图中标红的版本,如下图所示:

6.1.2 go 安装

把下载好的的go安装包解压到自己规定好的目录,如下所示:

[iwen@jina-milvus 0.4.20]$ tar -xf -C go1.23.0.linux-amd64.tar.gz /iwen

6.1.3 、配置环境变量

解压完成之后,需要配置好go环境变更,以便在任何地方都可以执行go的命令,如下所示:

[iwen@jina-milvus iwen]$ vi /etc/profile.d/go.sh

GO_HOME=/iwen/go

PATH=PATH:GO_HOME/bin

export PATH GO_HOME

[iwen@jina-milvus iwen]$ source /etc/profile.d/go.sh

6.1.4 、验证g o 环境变量

[iwen@jina-milvus iwen]$ go version

go version go1.23.0 linux/amd64

到此为止go环境安装配置完成。

6.2 、源码安装m ilvus-bakcup

大家可以参照4.1.1小节,下载自己milvus向量数据库版本对应的milvus-backup工具。

6.2.1 、解压 m ilvus-bakcup

[iwen@jina-milvus 0.4.20]$ unzip milvus-backup-0.4.20.zip

把milvus-backup-0.4.20移动到对应的安装目录下,并且重命名。

[iwen@jina-milvus 0.4.20]$ mv milvus-backup-0.4.20 /iwen

[iwen@jina-milvus 0.4.20]$ cd /iwen

[iwen@jina-milvus iwen]$ mv milvus-backup-0.4.20 iwen-backup

6.2.2 、编译安装m ilvus-backup

[iwen@jina-milvus milvus-backup]$ go get

此过程有点慢,要耐心等待。等这一步完成之后,执行以下步骤。

[iwen@jina-milvus milvus-backup]$ go build

该过程完成后,会在/iwen/milvus-backup目录下生成milvus-backup命令。此时源代码安装milvus-backup工具就完成了。

注:如果使用go get进行依赖安装时比较慢,可以使用go代理加速来完成,如下操作:

临时生效:

[iwen@jina-milvus milvus-backup]$ export GOPROXY=https://goproxy.io,direct

长期生效:

[iwen@jina-milvus ~]$ vi .bash_profile

添加以下内容:

export GOPROXY=https://goproxy.io,direct

[iwen@jina-milvus ~]$ source .bash_profile

参考文档

Milvus官方手册:Back up and Restore Data Using Commands Milvus v2.3.x documentation

zilliztech/milvus-backup:https://github.com/zilliztech/milvus-backup/tree/main

相关推荐
小张同学(恩师白云)1 小时前
SpringDataJPA基础增删改查
java·数据库
Jasonakeke2 小时前
【重学 MySQL】三十四、加密与解密函数
数据库·mysql
一知半解搞开发3 小时前
Mysql系列-索引简介
java·数据库·mysql
akhfuiigabv3 小时前
使用Neo4j-Cypher-FT实现自然语言查询图数据库
数据库·python·oracle·neo4j
Aa134517650253 小时前
c#中使用sql防注入方式写入数据
数据库·sql·c#
木木ainiks3 小时前
django自用教程
数据库·django·sqlite
akhfuiigabv3 小时前
探索Timescale Vector与Postgres数据库的融合:AI应用的新选择
数据库·人工智能·python
自身就是太阳3 小时前
Maven的高级特性
java·开发语言·数据库·后端·spring·maven
飞翔的佩奇4 小时前
Java项目: 基于SpringBoot+mybatis+maven课程答疑系统(含源码+数据库+毕业论文)
java·数据库·spring boot·毕业设计·maven·mybatis·课程答疑
OceanSky64 小时前
Mybatis中sql数组为空判断
数据库·sql·mybatis·数组判空