前言
随着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