Milvus跨集群数据迁移

318f2ffc762c76730724131de0d774be.png

将 Milvus 数据从 A 集群(K8S集群)迁到 B 集群(K8S集群),解决方案很多,这里提供一个使用官方 milvus-backup 工具进行数据迁移的方案。

注意:此方案为非实时同步方案,但借助 MinIO 客户端的数据同步功能,应该也是可以做到实时同步迁移。

9ca1361fc42757c5d3680bc305a8c17e.jpeg

步骤概览

  • 制作 milvus-backup 镜像,方便备份工具在 K8S 集群中使用 service name 访问 milvus 和 minio

  • 创建 milvus-backup 工作负载

  • 进入 milvus-backup 容器,修改 configs/backup.yaml 配置

  • 备份集群数据到本地存储中

  • 将数据拷贝到新集群中进行恢复

01. 

制作 milvus-backup 镜像

注意:如果是在两个单机版的 milvus 之间迁移数据,是不需要 milvus-backup 镜像的,又或者,如果 k8s 集群部署了 milvus, minio 的 nodeport 服务,也是可以不用镜像的。可以到官方 release 中下载一个二进制应用程序即可。

由于当前官方暂未提供 milvus-backup 的镜像,但官方提供了 Dockerfile,因此可以 git clone 一下官方代码仓库后使用 docker build 制作镜像。

#制作 milvus-backup 镜像
git clone git@github.com:zilliztech/milvus-backup.gitcd milvus-backup
docker build -t milvus/milvus-backup:main .

c30401012baf71230c8dbd3c0ce14e3c.jpeg

在 build 之前可以修改一下 Dockerfile,加快 build 速度,请参考:

#Build 加速,并添加 minio 客户端工具
FROM golang:1.18 AS builderENV CGO_ENABLED=0
ENV GOPROXY https://goproxy.cn,direct
WORKDIR /app
COPY . .
RUN go mod tidy
RUN go build -ldflags="-s -w" -o /app/milvus-backup
RUN wget -P /app https://dl.minio.org.cn/client/mc/release/linux-amd64/mc
RUN chmod +x /app/mcFROM alpine:3.17
WORKDIR /app
COPY --from=builder /app/milvus-backup .
COPY --from=builder /app/configs ./configs
COPY --from=builder /app/mc .
EXPOSE 8080
ENTRYPOINT ["/app/milvus-backup", "server"]

镜像制作好之后推送到 Docker Registry 以方便后续在 K8S 上创建工作负载。

9c19ee534626aea292a77e1c85eec823.jpeg

02. 

在 K8S 集群中创建 milvus-backup 工作负载(Deployment)

可以使用 kubectl 创建工作负载,也可以使用 K8S 管理后台(Kuboard / Kubesphere)创建,使用云端 K8S 的也一样,这里不展开。

注意一下,由于需要在两个集群间迁移,因此创建工作负载的时候挂载一个共享存储(/backup),方便迁移 MinIO 备份后的数据。

91488132a3517774f1e84babf9df7c78.jpeg

03. 

修改 configs/backup.yaml 文件

使用 kubectl 或者 K8S 管理后台进入 milvus-backup 容器,这里有一点要注意,milvus-backup 容器里没有 bash,只有 sh,所以请使用正确的 shell(/bin/sh)。

在容器的工作目录(/app)中有 milvus-backup 和 mc 2个二进制包和 configs 文件夹,mc 即 MinIO 客户端程序,configs 目录下 backup.yaml 即 milvus-backup 的默认配置文件。接下修改 backup.yaml 以适配当前集群的 milvus 和 minio,需要修改的项目有:

#backup.yaml
milvus:address: localhost
...
minio:address: localhost # Address of MinIO/S3...bucketName: "a-bucket" # Milvus Bucket name in MinIO/S3, make it the same as your milvus instancerootPath: "files" # Milvus storage root path in MinIO/S3, make it the same as your milvus instance...
backup:...gcPause:...address: http://localhost:9091

接下来,详细说明一下需要修改的配置:

milvus.address:对应 K8S 中 milvus 服务,milvus 默认会创建一个 xxx-milvus 类型为 ClusterIP 的服务,这里可使用服务名填写,比如:milvus-cluster-1-milvus,“milvus-cluster-1”是部署 milvus 时的 release name,有映像的话,官方叫:my-release;

minio.address:对应用 K8S 中 minio 服务,同上;

minio.buketName:  参考集群容器中/milvus/configs/milvus.yaml文件中的 minio 节点,默认也是:my-release;

minio.rootPath:同上,使用 milvus operator 集群部署时,默认为:files;

backup.gcPause.address:同 milvus.address;

还有 2 个配置需要注意:

minio.backupBucketName

minio.backupRootPath

这 2 个是备份文件存放的目录,后续我们需要使用 MinIO 客户端将文件拷贝到本地存储中。

修改好之后使用 ./milvus-backup check 检查一下。

7d603fe5b77efc65f237fd6a228c3353.jpeg

04. 

备份当前集群数据到本地存储中

使用 milvus-backup 工具备份数据,这里可以直接参考 ./milvus-backup -h,milvus 系列的文档还是非常棒的。

3942bdd26f5323fd1f57706175b71dfa.jpeg

如果数据量不大,备份速度很快,原理官方文档也讲了,这里不再介绍。备份好的之后,就可以使用 MinIO 客户端来查看数据了。

配置 MinIO 客户端

#添加 host
./mc config host add minio_1 http://my-release-minio:9000 minioadmin minioadmin

bb39ab29a9e191b710e65efb69932b59.jpeg

查看备份好的目录

#查看备份目录
./mc ls minio_1/a-bucket/backup

这里会列出上面使用 milvus-backup create 创建的备份

将备份好的文件拷贝到本地存储中

./mc cp -r minio_1/a-bucket/backup/mydb-20240510 /backup

这里的 /backup 目录是挂载的共享存储。

aef4c2545b1573638b0604f3647137e0.jpeg

05. 

恢复数据到新的集群中

进入新的集群(B)执行步骤 2和步骤 3,在步骤 3 中将 backup.yaml 中的配置修改成集群 B 的链接信息。可以把 backup-cluster-a.yaml, backup-cluster-b.yaml 放到共享存储 /backup 中,防止 pod 重启配置丢失。然后将共享目录中备份好的文件拷贝到新集群的 MinIO 中,使用 milvus-backup 恢复即可!

d0b9579b1b269322df344a4e0ba729d8.jpeg

注意,记得恢复的时候带上--restore_index参数,这样恢复的时候会带索引一起恢复出来。恢复好之后使用 Attu 加载一下 collection,就可以正常使用了。

d7f594784a9de3bf582a03d2afec352e.jpeg

推荐阅读

c7cde79095490178ab7e43cb44667d5f.png

ef8ceeb030bb32e947c074ca81ac1df0.png

d83cecfc82770b8ba35fa15b109a55ad.png

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

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

相关文章

C++基础std::bind

目录 说明 举例子: 说明 std::bind是一个函数模板,用于创建一个可调用对象,该对象可以在稍后的时候被调用。bind的作用是将函数与参数绑定在一起,在调用时可以自动传入预定的参数值。 std::bind的基本语法如下: templ…

1. zabbix监控服务器部署

zabbix监控服务器部署 一、监控的作用1、监控的方式2、zabbix监控获取数据的方式 二、zabbix server部署1、确保时间同步2、添加epel源3、添加zabbix仓库4、安装zabbix服务端软件5、在数据库创建zabbix需要的表、授权用户6、编辑zabbix server配置文件,指定数据库连…

在WordPress中使用AI的实用方法:入门级

随着人工智能(AI)的快速发展,WordPress平台上引入了越来越多的工具和插件,为网站管理员提供了强大的功能。这些工具不仅可以提升网站的用户体验,还能简化网站管理过程。本文将介绍几种在WordPress中使用AI的实用方法&a…

广州化工厂可燃气体报警器检定检验:安全生产新举措显成效

随着科技的不断发展,可燃气体报警器的检定检验技术也在不断进步。 广州的一些化工厂开始采用先进的智能检测系统和数据分析技术,对报警器的性能进行更加精准和全面的评估。 这些新技术不仅能够提高检定检验的效率和准确性,还能够为化工厂的…

大数据的力量:推动战略决策和业务转型

在当前全球化的时代背景下,国际间的联系日益紧密,世界变得更加互联互通。面对各种危机,数据驱动决策和分析显得愈发重要。从医学研究到市场趋势分析,大数据技术在各个领域发挥着关键作用,推动着一场深刻的变革浪潮。 大…

打开IE自动跳转EDGE的解决方法

目录 1. 创建快捷方式的解决方案 2. 其他可以尝试但未必靠谱的方法 2.1 通过设置EDGE浏览器实现 2.2 设置internet属性 2.3 BHO拓展管理 找到Windows10中的IE浏览器的方法: WIN Q,打开搜索栏;键入IE,即可看到IE浏览器 1. …

Java Stream流应用

Stream流的核心方法 Stream流的方法主要包含如图的几种 提供部分应用场景做个思考: (1)从员工集合中筛选出salary大于8000的员工,并放置到新的集合里。 (2)统计员工的最高薪资、平均薪资、薪资之和。 (3)将员工按薪资从高到低排序,同样薪资…

深度理解微信小程序技术架构:从前端到后台

在当今移动互联网的时代,微信小程序作为一种轻量级、便捷的应用形式,已经成为许多用户和开发者的首选。本文将深入探讨微信小程序的技术架构,从前端视角到后台支撑,为读者全面解析这一新兴应用形式的奥秘。 #### 一、微信小程序的…

opencv中凸包运算函数convexHull()的使用

操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 1.功能描述 该函数cv::convexHull用于寻找一组二维点集的凸包,采用的是Sklansky算法[242],当前实现中具有O(N logN)的时间复杂度。 1…

2024: 有效使用OKR的10个技巧

2023年是许多前所未有的一年。从真正意义上讲,这一年让我们为不可预测的事情做好了准备,也为不确定的事情提供了训练。在我们身边发生了这么多事情,而下一步的行动却依然不甚明朗的情况下,领导者们更应该开始制定战略,…

Linux服务器挖矿病毒处理

文章目录 Linux服务器挖矿病毒处理1.中毒表现2.解决办法2.1 断网并修改root密码2.2 找出隐藏的挖矿进程2.3 关闭病毒启动服务2.4 杀掉挖矿进程 3. 防止黑客再次入侵3.1 查找异常IP3.2 封禁异常IP3.3 查看是否有陌生公钥 补充知识参考 Linux服务器挖矿病毒处理 情况说明&#x…

FuTalk设计周刊-Vol.033

🔥AI漫谈 热点捕手 1、Stable Video Diffusion —— Stable Diffusion 推出的 AI 生成视频模型 Stable Video Diffusion 也是开源的,可以免费下载部署。支持文本/图片生成视频,最高支持 576*1024 分辨率 25 帧。 链接https://huggingface.…

DV、OV通配符SSL证书有什么区别

通配符SSL证书是经常提及的一种SSL证书类型,也被称为泛域名SSL证书。通配符证书在SSL证书当中是比较特殊的,它具有保护主域名及其下一级所有子域名的功能,非常适合子域名多的域名网站,能够有效的节省成本,并降低证书管…

申办乙级资信证书,河南工程咨询单位流程详解

河南工程咨询单位申办乙级资信证书的流程详解如下&#xff1a; 一、前期准备阶段 研读政策文件&#xff1a; 研读《工程咨询行业管理办法》&#xff08;国家发展改革委2017年第9号令&#xff09;以及《国家发展改革委关于印发<工程咨询单位资信评价标准>的通知》&#x…

调建堆的时间复杂度的计算与topK问题

建堆复杂度的计算 向下调整建堆 第一层有2^0个节点&#xff0c;最坏向下调整h-1次&#xff0c;第二层有2^1个节点&#xff0c;最坏向下调整h-2次&#xff0c;以此类推&#xff0c;将每一层所有节点最坏情况需要调整的次数相加&#xff0c;就能得到一个式子&#xff1a; 最后到…

FanySkill源文件修改,快捷键以及新增任务栏选项

FanySkill源文件修改&#xff0c;快捷键以及新增任务栏选项 一、文件下载二、快捷键设置三、任务栏四、本人配置 一、文件下载 自行去PCB联盟网下载&#xff0c;因为那边下载要联盟币&#xff0c;我不清楚我免费提供会不会给我带来没必要的损失&#xff0c;敬请谅解。 要下载的…

怎么为自己的VPS选择合适的CPU和RAM?

为网站选择VPS&#xff08;虚拟专用服务器&#xff09;与为家庭或办公室选择台式机或笔记本电脑没有什么不同。基本上&#xff0c;您要做的就是查看硬件配置并比较功能和价格。 然而&#xff0c;虽然您可能对个人计算机所需的资源类型有一个粗略的估计&#xff0c;但为服务器获…

一文理清OCR的前世今生

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享&#xff0c;包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

队列(数据结构篇)

数据结构之队列 队列(queue) 概念&#xff1a; 队列也是一种线性表&#xff0c;使用队列时插入在一端进行而删除则在另一端进行&#xff0c;队列的基本操作是入队&#xff0c;它是在表的末端(也叫做队尾)插入一个元素&#xff0c;出队&#xff0c;它是删除在**表的开头(**队…

Springboot 项目启动时扫描所有枚举并存入缓存(redis)

为什么这么做? 为了springboot 注解属性转换字典方便一点(使用缓存的方式在Springboot 启动时获取字典数据) 在启动时会扫描com.vehicle.manager.core.enumerate包下的所有枚举(包括类中的内部枚举),并取出对应属性以json的方式存入redis 目录结构如下: RedisUtil可以在Red…