Milvus 2.3 升级到 2.4 属于小版本迭代,通常支持原地升级而不需要单独的数据迁移操作,但必须在升级前完成全量数据备份。
先说结论:Milvus 2.3 到 2.4 一般无需导出导入数据,直接更新服务镜像并保留存储卷即可,但需严格备份。
- 适合:现有 Milvus 2.3 生产或测试集群,希望获取 2.4 新特性。
- 先看:官方 Release Notes 确认是否有不兼容的配置项变更。
- 建议:升级前使用 milvus-backup 工具或存储快照备份元数据与向量数据。
命令速用版
如果使用 Helm 部署,可通过更新 image tag 完成升级;如果使用 Docker Compose,需修改 yaml 文件中的镜像版本并重启。
# Helm 升级示例(需确认 chart 版本支持)
helm upgrade my-release milvus/milvus `--set` image.all.tag=2.4.x
# Docker Compose 升级示例
docker-compose pull
docker-compose up -d为什么会这样
Milvus 2.x 系列版本设计保持了存储格式的兼容性,元数据存储在 etcd,向量数据存储在 MinIO/S3 或本地卷,升级过程主要是替换计算组件镜像。
只要底层存储介质(etcd、MinIO、Pulsar/Kafka)的数据格式没有发生破坏性变更,新版本组件启动后会自动识别旧版本数据。因此,常规小版本升级不需要执行数据迁移工具,但为了防止升级过程中出现意外写入错误或元数据损坏,备份是必须的安全措施。
分步处理
按以下顺序执行升级操作,确保每一步都有检查点。
1. 检查版本兼容性
查阅 Milvus 2.4 的 Release Notes,确认是否有废弃的配置参数或依赖组件版本要求变化。重点关注 etcd 和 Pulsar/Kafka 的版本兼容性。
2. 执行数据备份
使用官方推荐的备份工具或云存储快照功能。如果使用 milvus-backup 工具,执行备份命令并等待完成。
# 备份操作示例(具体命令参考备份工具文档)
./milvus-backup create -n backup_23_to_243. 停止写服务
在升级窗口期,暂停所有向 Milvus 写入数据的业务服务,防止升级过程中产生脏数据。
4. 更新镜像版本
修改 Kubernetes Helm values 文件或 Docker Compose yaml 文件,将 Milvus 相关组件(standalone 或 cluster 模式)的镜像 tag 从 2.3.x 修改为 2.4.x。
5. 重启服务
执行升级命令或重启容器。观察 Pod 或容器状态,确保所有组件状态为 Running 且重启次数正常。
怎么验证是否生效
升级完成后,通过以下手段确认服务可用且数据完整。
1. 检查组件状态
查看 Milvus 核心组件(proxy, querynode, datanode, rootcoord 等)日志,确认没有启动报错。
kubectl get pods -l app.kubernetes.io/name=milvus
kubectl logs -f <pod-name>2. 验证数据一致性
使用 SDK 连接 Milvus 2.4 实例,列出原有 Collection,统计实体数量是否与升级前一致。
from pymilvus import connections, utility
connections.connect(host='localhost', port='19530')
print(utility.list_collections())
# 对比 collection 的 entity_count3. 验证读写功能
执行一次简单的插入和查询操作,确认新版本内核处理请求正常。
常见坑
升级过程中容易遇到以下问题,需提前规避。
配置项不兼容:2.4 版本可能移除了 2.3 中的某些 deprecated 配置,直接沿用旧配置文件可能导致启动失败。升级前需对比默认配置文件。
依赖组件版本:如果 Milvus 依赖的 etcd 或消息队列版本过低,2.4 版本可能无法正常连接。需确认基础设施组件版本满足 2.4 要求。
索引兼容性:虽然数据格式兼容,但某些特定索引类型在新版本中可能有行为变化。建议升级后重建关键索引以确保性能。
常见问题
升级会导致数据丢失吗?
原地升级操作本身不会清除存储卷中的数据,但升级失败可能导致元数据损坏,因此必须备份。
升级失败如何回滚?
将镜像版本改回 2.3.x,并利用升级前备份的数据恢复 etcd 和 MinIO 中的数据状态。
需要停机多久?
取决于数据量和集群规模,通常镜像拉取和组件重启需要几分钟,但数据验证时间需单独评估。
参考来源
- Milvus Official GitHub Repository, Releases Page, https://github.com/milvus-io/milvus
- Milvus Official Documentation, Upgrade Guide, https://milvus.io/docs