使用MC工具同步MinIO

📅 2026/6/16 19:43:56
使用MC工具同步MinIO
通过docker部署的相关服务一、确定服务器ipNode A:11.16.212.196Node B:11.16.212.197二、确保两台服务器已安装 MinIO 并运行docker ps三、部署mc工具两台都要1.下载mc工具MinIO Downloads2.上传MC#到根目录cd /#进到opt文件夹cd opt#创建文件夹mkdir deploy# 把下载的文件上传到deploy文件夹下# 请将下方命令中的 mc.RELEASE.2025-08-13T08-35-41Z 替换为您实际的文件名mv /opt/deploy/mc.RELEASE.2025-08-13T08-35-41Z /opt/deploy/mc# 赋予执行权限chmod x /opt/deploy/mc# 创建软链接到系统路径方便全局调用sudo ln -s /opt/deploy/mc /usr/local/bin/mc#验证安装mc --version# 正常应输出版本信息例如: mc version RELEASE.2025-08-13T08:35:41Z四、配置mc别名按节点分别配置Node A (11.16.212.196)# 设置本地别名为自己的IP远程别名为对端IPmc alias set local http://11.16.212.196:9000 minioadmin minioadminmc alias set remote http://11.16.212.197:9000 minioadmin minioadminNode B (11.16.212.197)# 设置本地别名为自己的IP远程别名为对端IPmc alias set local http://11.16.212.197:9000 minioadmin minioadminmc alias set remote http://11.16.212.196:9000 minioadmin minioadmin验证别名# 列出本地的桶/opt/deploy/mc ls local/# 列出远端的桶/opt/deploy/mc ls remote/遇见问题出现了别名混淆的问题执行完上面命令使用下面命令检查是否有重复都要执行mc ls local # 应该能列出本地的bucketsmc ls remote # 应该能列出服务器的buckets验证是否有local_minio和remote_minio删除旧别名/usr/local/bin/mc alias remove local_minio/usr/local/bin/mc alias remove remote_minio五、创建同步脚本两台服务器均执行cat SCRIPT /opt/deploy/sync.sh #!/bin/bash set -e MC/opt/deploy/mc LOG_FILE/var/log/minio_sync.log # 文件锁防止并发 exec 200/tmp/minio_sync.lock if ! flock -n 200; then exit 0 fi echo [$(date %F %T)] 开始同步 local → remote ... $LOG_FILE BUCKETS$(${MC} ls local/ 2/dev/null | awk {print $5} | sed s#/##) if [ -z $BUCKETS ]; then echo [$(date %F %T)] 没有桶需要同步 $LOG_FILE exit 0 fi for bucket in $BUCKETS; do ${MC} ls remote/$bucket /dev/null 21 || ${MC} mb remote/$bucket ${MC} mirror --overwrite --preserve local/$bucket remote/$bucket $LOG_FILE 21 done echo [$(date %F %T)] 同步完成 $LOG_FILE SCRIPT脚本说明特性说明无需 VIP 检测两台各自直接往对方推送实现双向同步文件锁防止 cron 多次触发导致并发冲突自动建桶远端缺少桶时自动创建全量 mirror--overwrite覆盖同名对象--preserve保留时间戳日志输出到/var/log/minio_sync.log#赋予权限chmod x /opt/deploy/sync.sh确认 mc 路径关键which mc# 如果输出不是 /usr/local/bin/mc请立即修正# sed -i s|MC_PATH/usr/local/bin/mc|MC_PATH你的实际路径| /opt/deploy/sync.sh六、手动运行与验证两台服务器都要执行#执行脚本/opt/deploy/sync.sh# 查看日志tail -f /var/log/minio_sync.log执行完成后查看两边的照片是否同步七、配置定时任务两台服务器均执行crontab -e添加进去#定时任务PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin*/5 * * * * /opt/deploy/sync.sh /dev/null 21保存退出:wq验证crontab -l输入配置信息