当前位置: 首页 > news >正文

Milvus 从 v2.4.12 升级到 v2.5.11 的实施方案

目录

一、数据备份方案

1. 安装 Milvus Backup 工具

2. 备份所有集合数据

3. 验证备份是否成功

二、升级前准备

三、版本升级

1. 停止并移除旧服务

2. 拉取新版本镜像

3. 启动新版本服务

4. 验证升级


一、数据备份方案

1. 安装 Milvus Backup 工具

pip install milvus-backup

2. 备份所有集合数据

mkdir -p /root/milvus_backup
milvus_backup create -c all -o /root/milvus_backup/backup_$(date +%Y%m%d) --host 127.0.0.1 --port 19530

3. 验证备份是否成功

milvus_backup list -i /root/milvus_backup/backup_$(date +%Y%m%d)

二、升级前准备

提示: 此操作非必须执行,目的是为了数据备份,防止后续版本升级过程中发生数据丢失

查看当前集合信息(便于升级后验证)

pip3 install pymilvus && python3 -c "from pymilvus import connections, utility; connections.connect('default', host='127.0.0.1', port='19530'); print(utility.list_collections())"

看到输出结果

WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1747385665.884511  104933 http_proxy_mapper.cc:130] cannot parse value of 'http_proxy' env var. Error: INVALID_ARGUMENT: Could not parse 'scheme' from uri '192.168.1.87:7890'. Scheme must begin with an alpha character [A-Za-z].
['text_search_db5', 'image_search_db5', 'innovation_strategy_text_search', 'strategy_text_search']

2. 备份数据 ,查看Milvus容器的挂载卷信息

docker inspect milvus-standalone | grep -A 10 "Mounts"

看到如下输出

root@milvus-114:~# docker inspect milvus-standalone | grep -A 10 "Mounts"

        "Mounts": [

            {

                "Type": "bind",

                "Source": "/data/volumes/milvus",

                "Destination": "/var/lib/milvus",

                "Mode": "rw",

                "RW": true,

                "Propagation": "rprivate"

            }

        ],

        "Config": {

root@milvus-114:~#

 Milvus的所有数据存储在宿主机的 /data/volumes/milvus 目录,对应容器内的 /var/lib/milvus 目录。

停止Milvus服务(确保数据写入完成):

docker stop milvus-standalone

创建数据文件备份目录:

mkdir -p /root/milvus_full_backup_$(date +%Y%m%d_%H%M%S)

 复制所有Milvus数据文件到备份目录:

cp -r /data/volumes/milvus/* /root/milvus_full_backup_20250516_183710/ && echo "备份完成!"

检测备份文件大小和完整性:

du -sh /root/milvus_full_backup_20250516_183710/

三、版本升级

提供了一个自动化更新脚本

bash /root/milvus_full_backup_20250516_183710/upgrade.sh

 /root/milvus_full_backup_20250516_183710/upgrade.sh脚本内容

# Milvus 升级脚本: v2.4.12 到 v2.5.11
# 此脚本在执行前会先备份当前数据echo "=== Milvus 升级脚本 ==="
echo "此脚本将升级 Milvus 从 v2.4.12 到 v2.5.11"
echo "警告: 升级前请确保已备份所有重要数据!"
echo# 检查Docker是否运行
if ! docker info > /dev/null 2>&1; thenecho "错误: Docker 服务未运行!"exit 1
fi# 确认继续
read -p "是否继续升级? (y/n): " confirm
if [ "$confirm" != "y" ]; thenecho "升级操作已取消"exit 0
fi# 检查备份文件
if [ ! -d "/root/milvus_full_backup_20250516_183710" ]; thenecho "错误: 备份目录不存在!"exit 1
fi# 检查etcd和minio服务是否正常运行
if ! docker ps | grep -q milvus-etcd; thenecho "错误: etcd 服务未在运行!"exit 1
fiif ! docker ps | grep -q milvus-minio; thenecho "错误: MinIO 服务未在运行!"exit 1
fi# 获取Docker网络信息
NETWORK_NAME="milvus"
if ! docker network inspect $NETWORK_NAME > /dev/null 2>&1; thenecho "错误: milvus 网络不存在!"exit 1
fiecho "使用 Docker 网络: $NETWORK_NAME"# 停止当前服务
echo "停止 Milvus 服务..."
docker stop milvus-standalone || true# 备份容器配置
echo "备份容器配置..."
docker inspect milvus-standalone > /root/milvus_full_backup_20250516_183710/milvus-container-config.json || true# 删除当前容器(保留数据)
echo "删除当前容器..."
docker rm milvus-standalone || true# 拉取新版本镜像
echo "拉取 Milvus v2.5.11 镜像..."
docker pull milvusdb/milvus:v2.5.11# 创建新容器 - 使用正确的启动命令和网络配置
echo "创建新版本容器..."
docker run -d --name milvus-standalone \--network $NETWORK_NAME \--network-alias milvus-standalone \-p 19530:19530 \-p 9091:9091 \-v /data/volumes/milvus:/var/lib/milvus \-e ETCD_ENDPOINTS=etcd:2379 \-e MINIO_ADDRESS=minio:9000 \milvusdb/milvus:v2.5.11 milvus run standalone# 等待容器启动
echo "等待 Milvus 服务启动..."
sleep 30# 检查状态
echo "检查容器状态..."
if docker ps | grep -q milvus-standalone; thenecho "Milvus v2.5.11 容器已启动"# 检查日志是否有错误if docker logs milvus-standalone | grep -i "panic\|error\|fail" | grep -v "level=info"; thenecho "警告: 发现错误日志,请检查容器日志!"elseecho "服务日志检查通过"fi
elseecho "错误: Milvus 容器未能正常启动!"echo "请使用 'docker logs milvus-standalone' 检查错误"exit 1
fiecho
echo "升级完成! Milvus 已从 v2.4.12 升级到 v2.5.11"
echo "请使用以下命令测试连接:"
echo "python3 -c \"from pymilvus import connections; connections.connect('default', host='127.0.0.1', port='19530'); print('连接成功')\""
echo
echo "如果升级出现问题,请使用 restore.sh 脚本恢复" 

简单执行方式:

1. 停止并移除旧服务

# 停止旧容器
docker stop milvus-standalone# 移除旧容器(保留数据卷)
docker rm milvus-standalone

2. 拉取新版本镜像

# 拉取新镜像
docker pull milvusdb/milvus:v2.5.11

3. 启动新版本服务

# 启动新容器
docker run -d --name milvus-standalone \--network milvus \--network-alias milvus-standalone \-p 19530:19530 \-p 9091:9091 \-v /data/volumes/milvus:/var/lib/milvus \-e ETCD_ENDPOINTS=etcd:2379 \-e MINIO_ADDRESS=minio:9000 \milvusdb/milvus:v2.5.11 milvus run standalone

4. 验证升级

# 检查容器状态
docker ps | grep milvus-standalone# 验证连接和版本
python3 -c "from pymilvus import connections, utility; \connections.connect('default', host='127.0.0.1', port='19530'); \print('连接成功,版本:', utility.get_server_version())"

http://www.dtcms.com/a/199706.html

相关文章:

  • FART 自动化脱壳框架简介与脱壳点的选择
  • 【Linux】守护进程
  • 人工智能100问☞第27问:神经网络与贝叶斯网络的关系?
  • 【Spring Boot后端组件】SpringMVC介绍及使用
  • 数据库管理工具(Navicate,DBeaver,HeidiSQL等)
  • 解决 MySQL 错误 1356 (HY000)
  • uniapp-商城-62-后台 商品列表(分类展示商品的布局)
  • uniapp自用辅助类小记
  • 我的食物信使女友
  • 如何git clone下来自定义文件名
  • 部署java项目
  • kafka 问与答
  • 应对WEEE 2025:猎板PCB的区块链追溯与高温基材创新
  • 基于小波包神经网络和D-S理论的滚动轴承故障诊断方法
  • sqli-labs第九关—‘时间盲注
  • 文件夹如何打包成jar包
  • Go语言数组的定义与操作 - 《Go语言实战指南》
  • 47、C#可否对内存进⾏直接的操作?
  • 企业网站架构部署与优化 --web技术与nginx网站环境部署
  • AIGC与数字金融:人工智能金融创新的新纪元
  • 单点登录是是什么?具体流程是什么?
  • Pycharm 选择Python Interpreter
  • App 发布后才想起安全?iOS 后置混淆的实战方法与工具路线(含 Ipa Guard 应用体验)
  • [免费]苍穹微信小程序外卖点餐系统修改版(跑腿点餐系统)(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
  • 【python基础知识】Day30 模块和库的导入
  • 【电动汽车充电系统核心技术全解:从can通讯高压架构到800V超充未来】
  • 星云智控v1.0.0产品发布会圆满举行:以创新技术重构物联网监控新生态
  • 亚信电子与联发科技携手打造AIoT新未来
  • 电脑闪屏可能的原因
  • FLASHDB API分析