news 2026/7/27 21:11:16

[milvus-backup]milvus-standalone跨服务器迁移

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[milvus-backup]milvus-standalone跨服务器迁移

[milvus-backup] milvus-standalone 跨服务器迁移

一、基础概念:什么是 Milvus 和数据迁移需求Milvus 是一个开源的向量数据库,专为 AI 应用中的相似性搜索而设计。它支持高达数十亿向量的高效存储和检索。在实际生产环境中,我们经常需要将 Milvus 服务从一台服务器迁移到另一台服务器,例如:- 服务器硬件升级- 数据中心迁移- 测试环境到生产环境的部署由于 Milvus standalone 模式(单机版)的数据存储在本地文件系统中,简单的文件复制并不足以保证数据的完整性和一致性。因此,我们需要使用官方提供的milvus-backup工具来安全地完成数据迁移。## 二、核心工具:milvus-backup 的工作原理milvus-backup是 Milvus 官方推出的数据备份与恢复工具,它支持:- 全量备份与恢复- 增量备份(基于时间戳)- 跨集群数据迁移其核心思路是:通过 gRPC 协议将源 Milvus 实例中的数据导出为备份文件,再通过同样的协议将备份文件导入到目标 Milvus 实例中。这种方式避免了直接操作底层文件系统可能带来的数据损坏风险。## 三、环境准备:在两台服务器上部署 Milvus standalone在开始迁移前,我们需要在源服务器(192.168.1.10)和目标服务器(192.168.1.20)上都部署 Milvus standalone。这里我们使用 Docker 方式部署。bash# 在源服务器上拉取并启动 Milvusdocker run -d --name milvus_source \ -p 19530:19530 \ -p 9091:9091 \ -v /data/milvus_source:/var/lib/milvus \ milvusdb/milvus:2.3.3# 在目标服务器上拉取并启动 Milvusdocker run -d --name milvus_target \ -p 19530:19530 \ -p 9091:9091 \ -v /data/milvus_target:/var/lib/milvus \ milvusdb/milvus:2.3.3注意:确保两台服务器能够互相通信(19530 端口用于 gRPC 通信,9091 端口用于 HTTP 管理)。## 四、备份阶段:从源服务器导出数据首先,在源服务器上使用milvus-backup工具创建备份文件。### 4.1 安装 milvus-backupbash# 下载 milvus-backup 二进制文件wget https://github.com/milvus-io/milvus-backup/releases/download/v0.4.0/milvus-backup-linux-amd64.tar.gztar -xzf milvus-backup-linux-amd64.tar.gzchmod +x milvus-backup### 4.2 编写备份配置文件创建backup_config.yaml文件:yaml# backup_config.yamlbackup: name: "my_backup_20231001" collection: "" # 留空表示备份所有集合 output: "/backup"milvus: host: "127.0.0.1" port: 19530### 4.3 执行备份命令bash./milvus-backup create -c backup_config.yaml此命令会:1. 连接到本地 Milvus 实例2. 读取所有集合的元数据和向量数据3. 将数据打包为备份文件(默认存储在/backup/my_backup_20231001目录下)备份完成后,你会看到类似输出:Backup created successfully: my_backup_20231001Backup path: /backup/my_backup_20231001## 五、传输阶段:将备份文件复制到目标服务器将备份文件从源服务器传输到目标服务器。这里使用scp命令:bash# 在源服务器上执行scp -r /backup/my_backup_20231001 user@192.168.1.20:/backup/确保目标服务器上也有相同的milvus-backup工具和配置文件。## 六、恢复阶段:将数据导入目标服务器### 6.1 编写恢复配置文件在目标服务器上创建restore_config.yamlyaml# restore_config.yamlrestore: name: "my_backup_20231001" input: "/backup/my_backup_20231001"milvus: host: "127.0.0.1" port: 19530### 6.2 执行恢复命令bash./milvus-backup restore -c restore_config.yaml恢复命令会自动:1. 连接目标 Milvus 实例2. 创建与源实例相同的集合结构3. 导入所有向量数据### 6.3 验证恢复结果编写一个简单的 Python 脚本来验证数据是否迁移成功。python# verify_migration.pyfrom pymilvus import connections, Collection, utilitydef verify_migration(): # 连接到目标 Milvus 实例 connections.connect(host="192.168.1.20", port=19530) # 列出所有集合 collections = utility.list_collections() print(f"目标服务器上的集合: {collections}") # 检查第一个集合的数据量 if collections: collection = Collection(name=collections[0]) collection.load() num_entities = collection.num_entities print(f"集合 '{collections[0]}' 中的实体数: {num_entities}") # 执行一个简单的搜索测试 import random import numpy as np # 生成随机查询向量(假设维度为128) query_vector = [random.random() for _ in range(128)] search_params = {"metric_type": "L2", "params": {"nprobe": 10}} results = collection.search( data=[query_vector], anns_field="embedding", param=search_params, limit=5 ) print(f"搜索结果: {results}") return True else: print("没有找到任何集合,迁移可能失败") return Falseif __name__ == "__main__": if verify_migration(): print("数据迁移验证成功!") else: print("数据迁移验证失败,请检查日志")运行验证脚本:bashpython verify_migration.py## 七、高级用法:增量迁移与自动化对于需要零停机的迁移场景,我们可以采用增量备份策略。### 7.1 增量备份配置yaml# incremental_backup.yamlbackup: name: "incremental_backup" collection: "" output: "/backup" incremental: true # 启用增量模式 start_time: "2023-09-30T00:00:00Z" # 从该时间点开始备份milvus: host: "127.0.0.1" port: 19530### 7.2 自动化迁移脚本python# automated_migration.pyimport subprocessimport timedef run_backup(): """执行全量备份""" print("开始全量备份...") result = subprocess.run( ["./milvus-backup", "create", "-c", "backup_config.yaml"], capture_output=True, text=True ) print(result.stdout) return result.returncode == 0def transfer_backup(): """传输备份文件到目标服务器""" print("传输备份文件...") result = subprocess.run([ "scp", "-r", "/backup/my_backup_20231001", "user@192.168.1.20:/backup/" ], capture_output=True, text=True) print(result.stdout) return result.returncode == 0def restore_backup(): """在目标服务器执行恢复""" print("开始恢复数据...") result = subprocess.run( ["./milvus-backup", "restore", "-c", "restore_config.yaml"], capture_output=True, text=True ) print(result.stdout) return result.returncode == 0def main(): # 步骤1:备份 if not run_backup(): print("备份失败,终止迁移") return False # 步骤2:传输 if not transfer_backup(): print("传输失败,终止迁移") return False # 步骤3:恢复 if not restore_backup(): print("恢复失败,请检查目标服务器状态") return False print("迁移完成!") return Trueif __name__ == "__main__": main()## 八、常见问题与注意事项1.版本兼容性:确保源和目标 Milvus 版本一致,否则可能出现数据格式不兼容2.网络带宽:大文件传输可能耗时,建议使用内网或配置带宽限制3.权限问题:确保milvus-backup工具有对备份目录的读写权限4.数据一致性:迁移期间建议暂停写操作,避免数据不一致## 总结本文详细介绍了使用milvus-backup工具实现 milvus-standalone 跨服务器迁移的完整流程。从基础概念到高级用法,我们涵盖了:- 环境准备与部署- 全量备份与恢复操作- 数据验证方法- 增量备份与自动化脚本通过milvus-backup这个官方工具,我们可以安全、高效地完成 Milvus 数据的跨服务器迁移。在实际生产环境中,建议先在测试环境验证迁移流程,确保数据完整性和业务连续性。随着 Milvus 生态的不断发展,未来会有更多自动化工具来简化这一过程。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/27 21:11:12

微信新功能来了!

大家好,我是小悟。 微信上线了一个新功能,让不少家长直呼“终于等到你”。是什么功能呢?微信正式宣布推出“未成年人模式”。 如果你发现自己突然花不出钱、刷不了视频,别慌,大概率是有人帮你开启了这项功能——没错&a…

作者头像 李华
网站建设 2026/7/27 21:10:32

计算机毕业设计之Python在杭州亚运会数据分析与赛事管理中的应用

在杭州亚运会这一国际盛事中,Python作为一种强大的数据分析工具,被广泛应用于赛事管理和数据分析。本文将探讨Python在杭州亚运会数据分析与赛事管理中的应用,以及其对赛事成功举办的重要意义。 Python在杭州亚运会数据分析中的应用体现在对比…

作者头像 李华
网站建设 2026/7/27 21:09:51

终极量化投研工具:如何用qstock轻松获取A股实时行情数据

终极量化投研工具:如何用qstock轻松获取A股实时行情数据 【免费下载链接】qstock qstock由“Python金融量化”公众号开发,试图打造成个人量化投研分析包,目前包括数据获取(data)、可视化(plot)、选股(stock)和量化回测…

作者头像 李华
网站建设 2026/7/27 21:09:42

3步掌握CRT动画生成:从概念理解到项目集成

3步掌握CRT动画生成:从概念理解到项目集成 【免费下载链接】crt-animation-terminal-ltx-2.3-lora 项目地址: https://ai.gitcode.com/hf_mirrors/lovis93/crt-animation-terminal-ltx-2.3-lora CRT动画终端LoRA项目为LTX-2.3 22B模型提供了专业的CRT显示器…

作者头像 李华
网站建设 2026/7/27 21:09:15

AI智能标注系统:零代码NLP技术实践与应用

1. 项目概述:AI智能标注系统的核心价值 在内容爆炸的时代,每天都有海量文章需要处理。作为一名经历过手工标注折磨的内容运营者,我深知传统方式的痛点:面对1000篇文章时,人工阅读提取关键词需要至少40小时,…

作者头像 李华
网站建设 2026/7/27 21:08:09

移动设备上的DailyNotes:响应式设计与移动端优化技巧

移动设备上的DailyNotes:响应式设计与移动端优化技巧 【免费下载链接】DailyNotes App for taking notes and tracking tasks on a daily basis 项目地址: https://gitcode.com/gh_mirrors/da/DailyNotes DailyNotes是一款专注于日常笔记和任务跟踪的应用程序…

作者头像 李华