[milvus-backup] Milvus Standalone 跨服务器迁移完整记录 📅 2026/7/6 2:38:33 适用场景源服务器 Milvus 使用common.storageType: local数据存储在本地磁盘。需要完整迁移数据含索引到新服务器。环境milvus-backup 0.5.16源 Milvus2.5.6 → 目标 Milvus2.5.8CPU 架构arm64整体流程前置准备磁盘/架构/挂载路径/工具准备→ 源服务器备份配置 → 备份 → 传输 local → local→ 目标服务器部署启动 Milvus → 恢复备份local → local→ 验证一、前置准备开始迁移前需要先确认磁盘空间、CPU 架构、当前 Milvus 的存储配置并提前下载好备份工具。1.1 磁盘空间评估查看源服务器剩余存储空间和相应的milvus容器数据存储量, 确保目标服务器剩余存储空间足够# 数据盘所在分区磁盘使用情况重点看 Avail剩余和 Use%df -h /path/to/# Docker 数据根目录docker info | grep Docker Root Dir# 指定目录所在分区df -hT $(docker info --format {{.DockerRootDir}})设源数据量为S目标可用空间为A仅恢复A ≥ S × 1.2预留 20%保留压缩包再解压A ≥ S × 2.21.2 CPU 架构确认和备份工具下载# 确认 CPU 架构选择对应版本uname -m输出示例aarch64arm64或x86_64。根据架构下载对应版本的 milvus-backup有两种使用方式推荐直接用容器镜像镜像已包含所有依赖且无需关心架构匹配问题。# 方式一直接拉取容器镜像推荐docker pull milvusdb/milvus-backup:latest# 方式二下载二进制需手动匹配架构# 从 GitHub Releases 选择对应架构的压缩包# https://github.com/zilliztech/milvus-backup/releaseswget https://github.com/zilliztech/milvus-backup/releases/download/v0.5.16/milvus-backup_0.5.16_Linux_arm64.tar.gztar -zxvf milvus-backup_0.5.16_Linux_arm64.tar.gz两种方式的区别方式优点缺点容器镜像免架构匹配开箱即用需要 Docker 环境二进制轻量可直接在宿主机运行需手动匹配架构依赖 glibc 版本配置文件模板官方 backup.yaml — 内容较多local 模式只需关注milvus和minio配置段1.3 查看 Milvus 容器挂载与存储配置# 找到 Milvus 容器docker ps -a | grep -i milvus# 进入容器确认bucketNamedocker exec -it milvus-container-name bashcat /milvus/configs/milvus.yaml | grep -E bucketName|rootPath# 查看数据卷挂载docker inspect 容器名 --format {{range .Mounts}}{{.Source}} - {{.Destination}}{{println}}{{end}}数据卷挂载输出示例/data/mymilvus/volumes/milvus - /var/lib/milvus/data/mymilvus/embedEtcd.yaml - /milvus/configs/embedEtcd.yaml/data/mymilvus/user.yaml - /milvus/configs/user.yaml二、源服务器执行备份2.1 配置 backup.yaml核心核心需要修改milvus和minio配置段milvus:address: localhostport: 19530 # 与实际 Milvus 容器端口一致user: rootpassword: Milvus # 用户根据实际密码修改minio:# ─── 源 Milvus 存储配置告诉 backup 去哪里读数据 ───storageType: local # 必须与 milvus.yaml 中的 common.storageType 一致address: localhost # local 模式下无实际意义port: 9000bucketName: a-bucket # 从源 Milvus 的 milvus.yaml 中获取localPath: /var/lib/milvus/data # 数据的实际路径使用容器的话要写容器内的路径与 docker -v 挂载的容器路径对应rootPath: /var/lib/milvus/data # 与上面保持一致# ─── 备份输出存储配置备份文件写到哪里 ───backupStorageType: localbackupBucketName: a-bucket # local 模式下保留与 bucketName 一致backupRootPath: /backup_data # 备份文件的存储路径若使用容器应写在容器内的输出目录backupLocalPath: /backup_data # 备份文件的存储路径若使用容器应写在容器内的输出目录crossStorage: false # local→local 保持 false除此之外的 S3/MinIO 密钥等参数可注释local 模式不需要。⚠️ 踩坑rootPath/localPath配置写好配置后备份过程会出现各种报错以下是逐级排查经验报错 1运行./milvus-backup check时候出现!!! Milvus root path is empty !!!原因rootPath配置错误备份工具找不到数据目录排查要点容器内运行备份工具时rootPath必须与容器内路径对应不是宿主机路径确认-v挂载的宿主机目录下确实有数据报错 2segment X has no insert logs网上多数说法是指路径不对应但经过反复验证问题的真实原因是Milvus 2.5.x 特定版本的 bugrootPath需要指向insert_log文件夹的父目录以 2.5.6 为例数据路径是volumes/milvus/datarootPath应填/path/to/volumes/milvus/data即数据目录的父级。之前一直填的是/path/to/volumes/milvus