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

news2024/12/23 15:28:44

前言

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

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

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

一、Milvus-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、Restful API方式

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

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

备份(backup):

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、Milvus-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、解压milvus-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。

bucketNamerootPath要根据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、check配置初检查

[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种方法:使用minio 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、milvus-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”功能模块即可。如下图所示:

六、源码安装milvus-backup

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

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

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

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

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

6.1.2go安装

把下载好的的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、验证go环境变量

[iwen@jina-milvus iwen]$ go version

go version go1.23.0 linux/amd64

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

6.2、源码安装milvus-bakcup

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

6.2.1、解压milvus-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、编译安装milvus-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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker实战演练

一.docker简介 二.docker部署 1.解压并安装所需要的软件 [rootdocker-node1 ~]# ls anaconda-ks.cfg docker.tar.gz mario.tar.gz busybox-latest.tar.gz game2048.tar.gz nginx-latest.tar.gz [rootdocker-node1 ~]# tar zxf docker.tar.gz [rootdocker-node1 …

cad转换dxf怎么转换?学会这5种方法轻松解决cad难题

在CAD领域中,DXF格式因其良好的兼容性和广泛的应用,成为了许多设计师和工程师的首选交换格式。然而,CAD文件很多默认的都是dwg格式,那么如何将CAD文件转换为DXF格式,很多小伙伴不是很清楚,下面给大家分享5种…

想学gis开发,java和c++哪个比较好?

java与C的应用场景不同,究竟选择谁,应该由开发者的兴趣方向来决定。 你选择Java,意味着以后的业务方向就是偏后台服务开发,如果你非得说我用java也可以写界面,对不起,别人不会。不管是从项目还是产品的角度…

Element-plus组件库基础组件使用

文章目录 按钮图标输入框表格表单对话框文件上传布局容器ElMessage消息提示MessageBox 消息提示框Pagination分页样式表单校验 记录vue3项目使用element-Plus,开发中常用的一些样式 下面这些组件是写增删改查是经常用到的,学习了这个写增删改查会好很多。…

DBpedia——利用维基百科信源构造语义知识库

1. 简介 DBpedia 从维基百科(Wikipedia)的词条里撷取出结构化的信息,以强化维基百科的搜寻功能,同时还提供复杂信息的检索功能,并将其他资料集连结至维基百科。通过这样的语义化技术的介入,让维基百科的庞杂资讯有了许多创新而有趣…

iview checkbox单独使用时 如何去掉显示的true和false以及不显示文字

如图所有 当在表格显示中想单独使用checkbox的时候,只想显示勾选 不显示文字这样写,分别用2个参数true/false来显示勾选和不勾选,再在外层用参数控制就好啦,是不是很简单呢!

各行各业的都有的文档推荐

如果你在寻找一个丰富多样、几乎能满足任何阅读需求的电子书下载的地方,不妨考虑“literalink.top”网站。它不仅涵盖了广泛的书籍种类,从经典文学到最新畅销书应有尽有,还提供了多本不同版本和译本的选择,超越了许多其他网站的资…

GaussDB 24.1.30 分布式3节点命令行方式部署

目录 GaussDB介绍 服务器环境 安装前准备 配置会话不中断 操作系统配置 关闭防火墙并禁止开机启动 设置时区和时间 检查时区和时间 java版本 expect root密码一致 root用户ssh连通性 上传软件包和安装脚本 安装脚本配置 修改 install_cluster.json 配置文件 安装…

2024最新最全面的JMeter 做接口加密测试

JMeter 怎么做接口的加密? JMeter如果需要做加密测试,是需要加密类型对应的jar包的。本文以MD5,加密作为教程。 1、在Test Plan 引用jar包; 2、添加BeanShell Sampler取样器,并输入调用代码 import md5.mymd5;//调用jar包 String…

使用kafka完成数据的实时同步,同步到es中。(使用kafka实现自动上下架 upper、lower)

文章目录 1、发送消息 KafkaService2、生产者 service-album -> AlbumInfoServiceImpl2.1、新增 saveAlbumInfo()2.2、更新 updateAlbumInfo()2.3、删除 removeAlbumInfo() 3、消费者 service-search - > AlbumListener.java 上架:新增专辑到 es下架&#xff…

信息学奥赛初赛天天练-78-NOIP2015普及组-基础题3-中断、计算机病毒、文件传输协议FTP、线性表、链式存储、栈

NOIP 2015 普及组 基础题3 8 所谓的“中断”是指( ) A 操作系统随意停止一个程序的运行 B 当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况的过程 C 因停机而停止一个程序的运行 D 电脑死机 9 计算机病毒是( ) A 通过计算机传播的危害人体健康的一种病…

有什么还原空白试卷的免费软件?2024快速进行空白还原的软件

有什么还原空白试卷的免费软件?2024快速进行空白还原的软件 还原空白试卷通常是指将已经填写的试卷还原为未填写的空白版本,以便重复使用或进行其他用途。以下是五款可以帮助你快速还原空白试卷的免费软件,这些工具提供了不同的功能&#xf…

补录.day43动态规划

300.最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序…

【RNN】循环神经网络RNN学习笔记

时间序列任务场景: 语音识别生成一段音乐情感分析DNA序列分析机器翻译 如何理解时间序列:特点:前后关联强,前因后果,后面产生的结果依赖于之前的结果 标准神经网络建模的弊端: 输入和输出在不同例子中可…

MosaicML-面向生成式AI的机器学习平台

前段时间,大数据巨头 Databricks 宣布已签署最终协议,将以13亿美元的价格,收购位于旧金山的人工智能初创公司MosaicML 。这篇文章来自 MosaicML官方的技术博客,是对 MosaicML 大模型训练平台的一个简单介绍。 AIGC领域最大收购&am…

三防平板:定制化服务的趋势——以智慧医疗为例

随着科技的飞速发展,三防平板产品凭借其坚固耐用、适应复杂环境的特性,在众多行业领域中崭露头角。而在AI迅速增长的今天,AI智慧医疗成为了一个备受关注的热点,它不仅推动了医疗行业的数字化转型,也为三防平板产品的定…

OS向量测试方法-PPMU

1.OS向量测试方法 详细步骤: 检查工作: ①检查每根pin连接到指定的PPMU资源是否正确 ②继电器资源是否一一对应 代码编写步骤: 1、 ①设计者设计的测试电路继电器重置初始化 ②close应该闭合的继电器 2、 ①DPS pin电压置0V,同时考虑电流量…

1500万“黑悟空”,打醒一线大厂了吗?

《黑神话:悟空》“霸占”热搜以来,几乎每天都在创造新纪录。 近日,有机构称全平台已售1500万份,仅以268标准版计算,已然拿下40亿元人民币收入,这下10万天兵天将,每人要打150只猴子了。 发售之…

私有云仓库Harbor,docker-compose容器编排

一、私有云仓库 1.pip工具 是python的包管理工具,和yum对rehat的关系是一样的 pip install --upgrade pip 升级版本,会报错,需要指定源 pip install --upgrade pip20.3 -i https://mirrors.aliyun.com/pypi/simple pip …

本地部署一个WordPress博客结合内网穿透实现异地远程访问本地站点

文章目录 前言1. 安装WordPress2. 创建WordPress数据库3. 安装相对URL插件4. 安装内网穿透发布网站4.1 命令行方式:4.2. 配置wordpress公网地址 5. 配置WordPress固定公网地址 前言 本文主要介绍如何在Linux Ubuntu系统上使用WordPress搭建一个本地网站&#xff0c…