MinIO 数据迁移实战:使用 mc + screen 实现稳定后台迁移
/ 5 min read
目录
背景
两台服务器都用 Docker 跑 MinIO,需要把 A 上的全部桶(大约 5.1 GB)迁移到 B。网络带宽有限,而且担心 SSH 断开或者本地电脑休眠会导致迁移中断。
这里记录一下我用 mc 配合 screen 完成迁移的过程,可以稳定地在后台运行,不需要一直守着。
第一步:安装 mc 客户端
在服务器 A 的宿主机上操作。优先使用官方地址:
wget https://dl.min.io/client/mc/release/linux-amd64/mc如果下载太慢(比如只有几十 KB/s),换成国内镜像站:
wget https://dl.minio.org.cn/client/mc/release/linux-amd64/mc下载完成后:
chmod +x mcsudo mv mc /usr/local/bin/mc --version # 确认安装成功第二步:配置 MinIO 别名
# 源服务器 Amc alias set source http://<A的IP>:9000 <AccessKey> <SecretKey>
# 目标服务器 Bmc alias set dest http://<B的IP>:9000 <AccessKey> <SecretKey>验证连接是否正常:
mc ls source/mc ls dest/第三步:执行在线迁移
基础命令是:
mc mirror --overwrite source/ dest/考虑到网络不太稳定,我加了几个参数:
--max-workers 2:限制同时上传 2 个文件,降低并发压力--retry:遇到临时错误自动重试--skip-errors:如果某个文件多次重试仍然失败,跳过它继续迁移其他文件
最终使用的命令:
mc mirror --overwrite --max-workers 2 --retry --skip-errors source/ dest/运行后,mc 会显示每个文件的传输进度,已经传输成功的文件会自动跳过(断点续传)。以后如果 A 有新增数据,再执行一次相同命令就可以只同步增量。
遇到的两个问题
1. 网络错误:Connection closed by foreign host
大文件上传耗时较长,中间设备(防火墙或负载均衡)可能超时断开连接。加上 --retry 参数后,mc 会自动重试失败的文件,基本能解决。
2. SSH 断开导致任务中断
因为 mc mirror 在前台运行,跟 SSH 会话绑定,只要断开连接或本地电脑睡眠,任务就会被杀掉。解决办法是用 screen 把它放到后台独立运行。
第四步:使用 screen 保活迁移任务
安装 screen
apt update && apt install screen -y # Debian/Ubuntu启动 screen 会话
screen -S minio-migrate在 screen 中运行迁移命令
mc mirror --overwrite --max-workers 2 --retry --skip-errors source/ dest/ 2>&1 | tee migration.log这里 2>&1 | tee migration.log 可以把输出同时显示在屏幕上并保存到日志文件,方便事后查看。
脱离 screen 会话
按 Ctrl + A,然后按 D。此时任务就在后台继续运行了,可以安全关闭 SSH 或让电脑休眠。
重新连接查看进度
screen -r minio-migrate查看已有的 screen 会话
screen -ls第五步:验证迁移结果
迁移完成后,对比源和目标的容量:
mc du source/ --recursivemc du dest/ --recursive或者抽查某个桶的文件数量:
mc ls source/某个桶 --recursive | wc -lmc ls dest/某个桶 --recursive | wc -l增量同步说明
后续如果 A 有新增或修改的数据,只需要再执行一次相同的 mc mirror 命令。它会自动比较并只传输变化的部分,不会重新传所有数据。
如果你希望目标端和源端完全一致(删除目标端多余的文件),可以加上 --remove 参数,但请谨慎使用。
总结
| 任务 | 工具/方法 |
|---|---|
| 客户端 | mc(MinIO Client) |
| 迁移命令 | mc mirror --overwrite --max-workers 2 --retry --skip-errors |
| 断点续传 | mc mirror 自动支持 |
| 后台保活 | screen |
| 增量同步 | 再次运行相同命令 |
按以上步骤操作,即使网络不太好、本地设备关机,迁移任务也能在服务器上稳定完成。