Milvus Standalone 跨服务器迁移(本地存储迁移)
数据存储在本地且数据量不大(几十w不算大)时,Milvus迁移很简单:打包数据目录 → 传到目标机 → 解压 → 重启服务。
背景
我在milvus容器启动时设置了-e COMMON_STORAGETYPE=local,所以数据存储在本地磁盘,而非常见的对象存储。下面简单补充Milvus数据存储的基础知识,常见的包括以下3种类型(实际不止3种):
| 存储类型 | 用途 | 可选实现 | 备注 |
|---|---|---|---|
| 对象存储 | 持久化存储向量数据、索引文件和日志 | MinIO(默认)、AWSS3、Azure Blob Storage、GCS、阿里云 OSS | 配置在minio 部分 |
| 本地存储 | 搜索/查询期间缓存向量数据,减少远程存储访问延迟 | --- | 默认路径/var/lib/milvus/data/ |
| 元数据存储 | 存储集合元数据、模式定义和集群状态 | etcd(默认)、TiKV | TiKV 支持更大规模水平扩展 |
迁移步骤
1. 源服务器 A:打包数据
为避免数据写入中断,在打包前先必须停止 Milvus 容器,所以一定要在非业务峰期进行。
bash
# 停止 Milvus 容器()
docker stop <container_name>
# 打包 volumes 数据目录
tar -czvf milvus_local_backup_20260622.tar.gz /path/to/volumes
# 重新启动源服务器 Milvus
docker start <container_name>
volumes 目录结构参考:
volumes/
├── milvus/
│ ├── data/
│ ├── etcd/
│ ├── rdb_data/
│ └── rdb_data_meta_kv/
2. 传输到目标服务器 B
选择传输方式后,将压缩包传到目标机。
3. 目标服务器 B:解压
bash
tar -xzvf milvus_local_backup_20260622.tar.gz -C /path/to/volumes
4. 启动 Milvus
使用与源服务器相同的 docker 指令启动容器。需保证以下文件和原始服务器配置保持一致:
| 文件/配置 | 说明 |
|---|---|
volumes/ |
重要数据目录,容器内外路径映射一致 |
user.yaml |
自定义配置 |
embedEtcd.yaml |
etcd 配置文件 |
| Milvus 镜像版本 | 源和目标使用相同版本 |
5. 验证
- 检查数据量是否一致
- 测试查询效果是否正常
预告: 下一篇介绍对于本地存储,使用milvus-backup工具进行跨服务器迁移, 不过对于本地存储且数据量不大的milvus数据, 真是杀鸡焉用牛刀。