1、单节点迁移

        如果 MinIO 采用单机部署(非分布式),且数据目录结构简单,可直接迁移数据文件:

在 A 机房服务器停止 MinIO 服务

# 找到 MinIO 进程并停止
ps -ef | grep minio
kill -9 <进程ID>

打包数据目录

# 假设数据目录为 /data/minio
tar -zcvf minio_data.tar.gz /mnt/data

传输数据到 B 机房服务器

用 scp 直接传输(适合小数据量)

scp minio_data.tar.gz user@B服务器IP:/tmp/

大数据量建议用 rsync 断点续传

rsync -avz /data/minio user@B服务器IP:/data/

在 B 机房服务器恢复数据

# 解压数据(如果用 tar 打包)
tar -zxvf /tmp/minio_data.tar.gz -C /

# 确保目录权限一致
chown -R <运行用户>:/mnt/data

在 B 机房启动 MinIO

用相同的启动参数启动(确保端口、用户名密码一致)

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=password
minio server /mnt/data --console-address ":9001"

2、使用 mc mirror 工具迁移(适用于分布式或网络稳定场景)

        MinIO 提供的 mc 客户端工具支持数据镜像同步,适合跨机房网络稳定的情况。

在迁移机器(可在 A 或 B 机房)安装 mc 客户端

# 下载 mc
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/

配置 MinIO 源和目标端点

# 配置 A 机房 MinIO(源)
mc alias set minio_A http://A服务器IP:9000 ACCESS_KEY SECRET_KEY

# 配置 B 机房 MinIO(目标,需提前部署好)
mc alias set minio_B http://B服务器IP:9000 ACCESS_KEY SECRET_KEY
  • 9000:minio api端口
  • 请将IP、access_key和secret_key替换为实际值。

同步所有数据

将A机房数据同步到B机房

# 镜像同步所有桶(--remove 表示删除目标端多余文件,保持一致)
mc mirror --remove --watch minio_A/ minio_B/
  • mc mirror:将源端(minio_A)的内容镜像同步到目标端(minio_B)
  • --remove只在目标端删除源端没有的文件,保持两端一致。--remove 参数只会影响目标端(minio_B),不会对源端(minio_A)做任何删除操作。
  • --watch:持续监控源端变化并同步(适合增量迁移)
  • 如需指定单个桶:mc mirror minio_A/bucket1 minio_B/bucket1

日志如下:

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐