MinIO在Ubuntu上的数据迁移方法
小樊
43
2025-12-06 22:40:02
MinIO 在 Ubuntu 上的数据迁移方法
一、方法总览与选择
- mc mirror 在线镜像(推荐):在两套 MinIO 之间做全量 + 增量同步,支持断点续传与**–watch 实时监听**,网络只需源→目标 9000 端口互通,业务无需停机。适合绝大多数迁移与双活过渡场景。
- rclone 跨对象存储迁移:兼容多平台与多厂商,具备断点续传、校验和验证、带宽限制等能力,适合跨云/跨环境迁移或作为 mc 的替代方案。
- 本地数据目录拷贝(单机/同构):停机后直接打包/拷贝 MinIO 数据目录到新机器,保持相同启动参数与目录权限后启动,适合单节点或非分布式部署的快速迁移。
- 挂载 + 同步(s3fs):将桶挂载为本地目录后用 rsync/mc 做一次性或周期性同步,适合阶段性迁移/校验或边用边迁的过渡方案。
二、方法一 mc mirror 在线镜像(推荐)
- 步骤
- 在能同时访问两端的 Ubuntu 上安装 mc:
wget https://dl.min.io/client/mc/release/linux-amd64/mc && chmod +x mc && sudo mv mc /usr/local/bin/
- 配置两端别名并校验连通:
mc alias set src http://<源IP>:9000
mc alias set dst http://<目标IP>:9000
mc admin info src && mc admin info dst
- 全量 + 实时增量迁移(后台常驻):
nohup mc mirror --watch --overwrite src/ dst/ >~/mirror.log 2>&1 &
说明:src/ 表示所有桶整体镜像;桶不存在会自动创建;–watch 会在全量结束后继续监听新增/变更/删除;–overwrite 覆盖目标同名对象。
- 进度与一致性校验:
tail -f ~/mirror.log
mc ls --details src/mybucket && mc ls --details dst/mybucket
mc diff --recursive --size-only src/ dst/(无输出即一致)
- 守护与切换:
- 建议做成 systemd 服务长期守护,迁移完成也不停;正式切换前停止进程:systemctl stop mc-mirror
- 切换业务流量:应用改配置指向目标;最后一次 mc diff 确认无差异;移除同步进程/服务。
- 常见问题速查:
- 报 “bucket does not exist”:先 mc mb dst/newbucket,或为账号授予 s3:CreateBucket 权限。
- 速度优化:将 mc 放在与源/目标同网段;提高 ulimit -n 65535;单桶过大可拆分并行跑 mirror。
- 只迁单个桶:mc mirror --watch --overwrite src/mybucket dst/mybucket。
三、方法二 rclone 跨对象存储迁移
- 步骤
- 安装 rclone:curl https://rclone.org/install.sh | sudo bash
- 交互配置源/目标 MinIO(S3 兼容):
rclone config → 新建 remote → 选择 s3 → provider 选 Minio → 填写 access_key_id/secret_access_key 与 endpoint(如 http://IP:9000)。
- 常用迁移命令:
- 全量拷贝(跳过已存在):rclone copy oldminio:srcbucket newminio:dstbucket
- 使两端一致(谨慎,目标端多余文件会被删除):rclone sync oldminio:srcbucket newminio:dstbucket
- 先干跑校验:rclone sync --dry-run oldminio:srcbucket newminio:dstbucket
- 特性与建议:rclone 支持断点续传、校验和验证、带宽限制,适合跨云/跨环境迁移;迁移前用 –dry-run 验证,再执行正式命令。
四、方法三 本地数据目录拷贝(单机/同构)
- 适用前提:单节点或非分布式部署,且可直接访问磁盘数据目录。
- 步骤
- 停止源端 MinIO:ps -ef | grep minio → kill -9
- 打包/传输数据目录(示例数据目录 /data/minio):
- 小数据量:tar -zcvf minio_data.tar.gz /data/minio
scp minio_data.tar.gz user@目标IP:/tmp/
- 大数据量:rsync -avz /data/minio user@目标IP:/data/
- 在目标端恢复:
tar -zxvf /tmp/minio_data.tar.gz -C /
chown -R <运行用户>:<用户组> /data/minio
- 以相同启动参数启动目标端 MinIO:
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=password
minio server /data/minio --console-address “:9001”
- 说明:该方法停机窗口明显,适合一次性搬迁;分布式/纠删码场景不建议直接拷贝目录。
五、方法四 挂载 + 同步(s3fs)
- 适用场景:希望像本地磁盘一样访问桶,或做阶段性迁移/校验。
- 步骤
- 安装 s3fs:sudo apt-get update && sudo apt-get install -y fuse s3fs
- 配置凭证:echo “ACCESS_KEY:SECRET_KEY” > ~/.passwd-s3fs && chmod 600 ~/.passwd-s3fs
- 挂载桶到本地:
mkdir ~/minio-mount
s3fs BUCKET_NAME ~/minio-mount -o use_path_request_style -o passwd_file=~/.passwd-s3fs -o url=http://:9000
- 迁移/校验:
- 一次性同步到目标 MinIO:mc mirror /path/to/local/folder myminio/bucket-name
- 实时监听同步:mc mirror --watch /path/to/local/folder myminio/bucket-name
- 注意:挂载是网络实时访问,断网不可用;适合过渡/校验,不建议作为长期生产写入路径。