如何备份Docker Milvus到minio存储?

Docker

1 基础知识

Milvus Backup是一个用于备份和恢复Milvus数据的工具
Milvus Backup同时提供CLI和API用户适应不同的应用场景

2 最佳实践

2.1 环境配置

2.1.1 部署Milvus节点

如何部署Docker单节点Milvus?

2.1.2 设置备份的桶和备份账号

如何mc设置MinIO的桶和权限?


请参阅以上章节并结合如下要求创建桶和备份的账号和密码,
桶的名称:milvus-backup
桶的权限:读写
账号名称:milvus-backup
账号密码:milvus-backup-pwd

2.2 部署备份工具

2.2.1 下载软件包

cd ~
wget https://github.com/zilliztech/milvus-backup/releases/download/v0.5.8/milvus-backup_0.5.8_Linux_x86_64.tar.gz
wget https://raw.githubusercontent.com/zilliztech/milvus-backup/refs/heads/main/configs/backup.yaml

以上只是演示,如果需要其他版本或者下载异常,请冲如下连接下载,
https://github.com/zilliztech/milvus-backup/releases
https://github.com/zilliztech/milvus-backup/blob/main/configs/backup.yaml

2.2.2 解压软件包

cd ~
tar -xf milvus-backup_0.5.8_Linux_x86_64.tar.gz

2.2.3 部署软件包

cd ~
mkdir -p /opt/milvus-backup/configs /var/log/milvus-backup
ln -s /opt/milvus-backup/configs /etc/milvus-backup
ln -s /var/log/milvus-backup /opt/milvus-backup/logs
mv milvus-backup /opt/milvus-backup/
chmod +x /opt/milvus-backup/milvus-backup
mv backup.yaml /etc/milvus-backup/

配置环境变量,

vim /etc/profile.d/milvus-backup.sh

加入如下配置,

export MILVUS_BACKUP=/opt/milvus-backup
export PATH=${MILVUS_BACKUP}:$PATH

配置创建后,你需要使用如下命令导入环境变量,

source /etc/profile

2.2.4 测试部署

milvus-backup -h

可见如下输出,

0.5.8 (Built on 2025-08-12T06:24:52Z from Git SHA 2cda63aeb8762b363e76f9f9a09a7aa33d266679 by go1.24.5)
config: backup.yaml
milvus-backup is a backup&restore tool for milvus.

Usage:
  milvus-backup [flags]
  milvus-backup [command]

Available Commands:
  check       check if the connects is right.
  create      create subcommand create a backup.
  delete      delete backup by name.
  get         get subcommand get backup by name.
  help        Help about any command
  list        list subcommand shows all backup in the cluster.
  migrate     migrate the backup data to zilliz cloud cluster
  restore     restore a backup
  server      server subcommand start milvus-backup RESTAPI server.

Flags:
      --config string   config YAML file of milvus (default "backup.yaml")
  -h, --help            help for milvus-backup
      --set strings     Override yaml values using a capitalized snake case format (--set MILVUS_USER=Marco)

Use "milvus-backup [command] --help" for more information about a command.

2.3 设置备份工具

2.3.1 修改配置文件

cp /etc/milvus-backup/backup.yaml /etc/milvus-backup/backup.yaml.default
vim /etc/milvus-backup/backup.yaml

配置修改如下或者修改如下配置,

milvus:
  address: localhost
  port: 19530
  user: "root"
  password: "rootpwd"

minio:
  storageType: "minio" # support storage type: local, minio, s3, aws, gcp, ali(aliyun), azure, tc(tencent), gcpnative
  address: localhost # Address of MinIO/S3
  port: 9700   # Port of MinIO/S3
  accessKeyID: admin  # accessKeyID of MinIO/S3
  secretAccessKey: adminpwd # MinIO/S3 encryption string
  bucketName: "a-bucket" # Milvus Bucket name in MinIO/S3, make it the same as your milvus instance

  backupStorageType: "minio" # support storage type: local, minio, s3, aws, gcp, ali(aliyun), azure, tc(tencent)
  backupAddress: minio.cmdschool.org # Address of MinIO/S3
  backupPort: 9000   # Port of MinIO/S3
  backupAccessKeyID: milvus-backup  # accessKeyID of MinIO/S3
  backupSecretAccessKey: milvus-backup-pwd # MinIO/S3 encryption string
  backupBucketName: "milvus-backup" # Bucket name to store backup data. Backup data will store to backupBucketName/backupRootPath
  backupRootPath: "backup" # Rootpath to store backup data. Backup data will store to backupBucketName/backupRootPath
  backupUseSSL: true # Access to MinIO/S3 with SSL

2.3.2 检查配置

milvus-backup check --config /etc/milvus-backup/backup.yaml

如果正常执行,可见如下提示信息,

0.5.8 (Built on 2025-08-12T06:24:52Z from Git SHA 2cda63aeb8762b363e76f9f9a09a7aa33d266679 by go1.24.5)
config: backup.yaml
[2025/09/17 14:05:12.705 +08:00] [INFO] [milvus/grpc.go:261] ["New milvus grpc client"] [component=grpc-client] [host=localhost:19530]
[2025/09/17 14:05:13.063 +08:00] [INFO] [milvus/grpc.go:342] ["connect to server"] [component=grpc-client] [server=2.5.14]
[2025/09/17 14:05:13.066 +08:00] [INFO] [storage/factory.go:95] ["create milvus storage client"] [endpoint=localhost:9700] [bucket=a-bucket]
Milvus storage is empty. Please verify whether your cluster is really empty. If not, the configs(minio address, port, bucket, rootPath) may be wrong
Milvus version: 2.5.14
Storage:
milvus-bucket: a-bucket
milvus-rootpath: files
backup-bucket: milvus-backup
backup-rootpath: backup

2.4 备份操作

2.4.1 创建备份

milvus-backup create --config /etc/milvus-backup/backup.yaml

如果正常执行,可见如下提示信息,

0.5.8 (Built on 2025-08-12T06:24:52Z from Git SHA 2cda63aeb8762b363e76f9f9a09a7aa33d266679 by go1.24.5)
config: backup.yaml
[2025/09/17 13:39:55.796 +08:00] [INFO] [core/backup_impl_create_backup.go:25] ["receive CreateBackupRequest"] [requestId=c46ef390-0398-4fd7-aeb7-1540fbbc9da7] [backupName=] [collections="[]"] [databaseCollections=] [async=false] [force=false] [metaOnly=false]
[2025/09/17 13:39:55.796 +08:00] [INFO] [core/backup_context.go:78] ["{Base:0xc00029d188 MaxSegmentGroupSize:2147483648 BackupCollectionParallelism:1 BackupCopyDataParallelism:128 RestoreParallelism:1 ImportJobParallelism:768 KeepTempFiles:false GcPauseEnable:false GcPauseAddress:http://localhost:9091}"]
[2025/09/17 13:39:55.796 +08:00] [INFO] [core/backup_context.go:79] ["{Base:0xc00029d188 Enabled:true DebugMode:false SimpleResponse:false}"]
[2025/09/17 13:39:55.796 +08:00] [INFO] [storage/factory.go:42] ["create backup storage client"] [endpoint=minio.cmdschool.org:9000] [bucket=milvus-backup]
[2025/09/17 13:39:55.823 +08:00] [INFO] [milvus/grpc.go:261] ["New milvus grpc client"] [component=grpc-client] [host=localhost:19530]
[2025/09/17 13:39:57.182 +08:00] [INFO] [milvus/grpc.go:342] ["connect to server"] [component=grpc-client] [server=2.5.14]
[2025/09/17 13:39:57.186 +08:00] [INFO] [storage/factory.go:95] ["create milvus storage client"] [endpoint=localhost:9700] [bucket=a-bucket]
[2025/09/17 13:39:57.186 +08:00] [INFO] [milvus/restful.go:250] ["new milvus restful client"] [host=localhost:19530]
[2025/09/17 13:39:57.186 +08:00] [INFO] [backup/task.go:263] ["read need backup db and collection from API"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7]
[2025/09/17 13:39:57.186 +08:00] [INFO] [backup/task.go:199] ["the milvus server support multi database"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7]
[2025/09/17 13:39:57.189 +08:00] [INFO] [backup/task.go:268] ["list db and collection from API done"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7] [dbNames="[default]"] [collections=null]
[2025/09/17 13:39:57.190 +08:00] [INFO] [backup/task.go:281] ["backup db done"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7]
[2025/09/17 13:39:57.190 +08:00] [INFO] [backup/task.go:311] ["start backup all collections"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7] [collections=null]
[2025/09/17 13:39:57.190 +08:00] [INFO] [backup/task.go:331] ["backup all collections successfully"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7]
[2025/09/17 13:39:57.190 +08:00] [INFO] [backup/task.go:338] ["skip backup rbac"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7]
[2025/09/17 13:39:57.190 +08:00] [INFO] [backup/task.go:351] ["start backup rpc channel pos"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7]
[2025/09/17 13:39:57.190 +08:00] [INFO] [backup/rpc_channel_pos.go:36] ["try to get rpc channel pos"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7] [rpc_channel=by-dev-replicate-msg]
[2025/09/17 13:39:57.191 +08:00] [INFO] [backup/rpc_channel_pos.go:42] ["get rpc channel pos done"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7] [pos="ChRieS1kZXYtcmVwbGljYXRlLW1zZxII//////////8="]
[2025/09/17 13:39:57.191 +08:00] [INFO] [backup/task.go:357] ["backup rpc channel pos done"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7]
[2025/09/17 13:39:57.191 +08:00] [INFO] [backup/task.go:125] ["backup successfully"] [backup_id=c46ef390-0398-4fd7-aeb7-1540fbbc9da7]
[2025/09/17 13:39:57.191 +08:00] [INFO] [meta/backup_meta_manager.go:512] ["Get backup"] [state=BACKUP_EXECUTING] [backupedSize=0] [totalSize=0] [progress=0]
[2025/09/17 13:39:57.267 +08:00] [INFO] [core/backup_impl_create_backup.go:204] ["finish writeBackupInfoMeta"] [path=backup/backup_2025_09_17_05_39_55_796480632/] [backupName=backup_2025_09_17_05_39_55_796480632] ["backup meta"="{\"id\":\"c46ef390-0398-4fd7-aeb7-1540fbbc9da7\",\"state_code\":1,\"start_time\":1758087597186,\"progress\":0,\"name\":\"backup_2025_09_17_05_39_55_796480632\",\"size\":0,\"milvus_version\":\"2.5.14\"}"]
[2025/09/17 13:39:57.267 +08:00] [INFO] [core/backup_impl_create_backup.go:145] ["finish backup all info"] [requestId=c46ef390-0398-4fd7-aeb7-1540fbbc9da7] [backupName=backup_2025_09_17_05_39_55_796480632] [collections="[]"] [async=false]
success
duration:1.47 s

2.4.2 查看备份

milvus-backup list --config /etc/milvus-backup/backup.yaml

如果正常执行,可见如下提示信息,

0.5.8 (Built on 2025-08-12T06:24:52Z from Git SHA 2cda63aeb8762b363e76f9f9a09a7aa33d266679 by go1.24.5)
config: backup.yaml
[2025/09/17 13:44:15.627 +08:00] [INFO] [core/backup_context.go:250] ["receive ListBackupsRequest"] [requestId=649ca879-3a75-4db8-8439-a2c4c2ed7e5f] [collectionName=]
[2025/09/17 13:44:15.627 +08:00] [INFO] [core/backup_context.go:78] ["{Base:0xc0002ab508 MaxSegmentGroupSize:2147483648 BackupCollectionParallelism:1 BackupCopyDataParallelism:128 RestoreParallelism:1 ImportJobParallelism:768 KeepTempFiles:false GcPauseEnable:false GcPauseAddress:http://localhost:9091}"]
[2025/09/17 13:44:15.627 +08:00] [INFO] [core/backup_context.go:79] ["{Base:0xc0002ab508 Enabled:true DebugMode:false SimpleResponse:false}"]
[2025/09/17 13:44:15.627 +08:00] [INFO] [storage/factory.go:42] ["create backup storage client"] [endpoint=minio.cmdschool.org:9000] [bucket=milvus-backup]
[2025/09/17 13:44:15.654 +08:00] [INFO] [core/backup_context.go:276] ["List Backups' path"] [backup_paths="[backup/backup_2025_09_17_05_37_56_505385968/,backup/backup_2025_09_17_05_38_28_859053422/,backup/backup_2025_09_17_05_38_36_224165819/,backup/backup_2025_09_17_05_39_55_796480632/]"]
[2025/09/17 13:44:15.655 +08:00] [INFO] [core/backup_context.go:158] ["receive GetBackupRequest"] [requestId=cca6f255-e52d-46c1-89a6-d7b1f6042a66] [backupName=backup_2025_09_17_05_37_56_505385968] [backupId=] [bucketName=] [path=]
[2025/09/17 13:44:15.664 +08:00] [INFO] [core/backup_context.go:235] ["finish GetBackupRequest"] [requestId=cca6f255-e52d-46c1-89a6-d7b1f6042a66] [backupName=backup_2025_09_17_05_37_56_505385968] [backupId=] [bucketName=] [path=]
[2025/09/17 13:44:15.664 +08:00] [INFO] [core/backup_context.go:158] ["receive GetBackupRequest"] [requestId=23da1598-febd-47a9-83d5-7f7979437157] [backupName=backup_2025_09_17_05_38_28_859053422] [backupId=] [bucketName=] [path=]
[2025/09/17 13:44:15.670 +08:00] [INFO] [core/backup_context.go:235] ["finish GetBackupRequest"] [requestId=23da1598-febd-47a9-83d5-7f7979437157] [backupName=backup_2025_09_17_05_38_28_859053422] [backupId=] [bucketName=] [path=]
[2025/09/17 13:44:15.670 +08:00] [INFO] [core/backup_context.go:158] ["receive GetBackupRequest"] [requestId=1910652c-2478-4fd1-93b5-d45d29112594] [backupName=backup_2025_09_17_05_38_36_224165819] [backupId=] [bucketName=] [path=]
[2025/09/17 13:44:15.677 +08:00] [INFO] [core/backup_context.go:235] ["finish GetBackupRequest"] [requestId=1910652c-2478-4fd1-93b5-d45d29112594] [backupName=backup_2025_09_17_05_38_36_224165819] [backupId=] [bucketName=] [path=]
[2025/09/17 13:44:15.677 +08:00] [INFO] [core/backup_context.go:158] ["receive GetBackupRequest"] [requestId=bce04edf-9267-4e07-96ce-3be98b70abcd] [backupName=backup_2025_09_17_05_39_55_796480632] [backupId=] [bucketName=] [path=]
[2025/09/17 13:44:15.683 +08:00] [INFO] [core/backup_context.go:235] ["finish GetBackupRequest"] [requestId=bce04edf-9267-4e07-96ce-3be98b70abcd] [backupName=backup_2025_09_17_05_39_55_796480632] [backupId=] [bucketName=] [path=]
[2025/09/17 13:44:15.683 +08:00] [INFO] [core/backup_context.go:315] ["return ListBackupsResponse"] [requestId=649ca879-3a75-4db8-8439-a2c4c2ed7e5f] [code=0] [msg=success] ["data: list_backup_names"="[backup_2025_09_17_05_37_56_505385968,backup_2025_09_17_05_38_28_859053422,backup_2025_09_17_05_38_36_224165819,backup_2025_09_17_05_39_55_796480632]"]
>> Backups:
backup_2025_09_17_05_37_56_505385968

参阅文档
==============

备份文档
———–
https://zilliz.com.cn/blog/how-to-use-milvus-backup-tool-step-by-step-guide.md
https://milvus.io/docs/zh/milvus_backup_overview.md

备份github
———–
https://github.com/zilliztech/milvus-backup

没有评论

发表回复

Docker
如何从minio还原Docker Milvus备份?

1 基础知识 Milvus Backup是一个用于备份和恢复Milvus数据的工具 Milvus B …

Docker
如何修改Docker Milvus minio存储密码?

1 前言 一个问题,一篇文章,一出故事。 笔者今天部署好Milvus后,发现分布式存储minio的r …

Docker
如何启用Docker Milvus的root认证?

1 前言 一个问题,一篇文章,一出故事。 笔者今天部署好Milvus后,发现root登陆无需密码,于 …