本指南基于您现有的两个MinIO启动脚本:
67 机器的minio-start.sh (主节点)68 机器的minio-start.sh (从节点)配置目标: 67为主节点,68为从节点,实现数据主从同步。
推荐使用: 实时同步模式(watch模式)
备选方案: 定时同步模式(cron模式)
# 1. 启动MinIO服务
chmod +x /path/to/67\ 机器的minio-start.sh
/path/to/67\ 机器的minio-start.sh
# 2. 检查服务状态
ps aux | grep minio
netstat -tlnp | grep 9000
# 3. 测试访问
curl http://127.0.0.1:9000/minio/health/live
# 1. 启动MinIO服务
chmod +x /path/to/68\ 机器的minio-start.sh
/path/to/68\ 机器的minio-start.sh
# 2. 检查服务状态
ps aux | grep minio
netstat -tlnp | grep 9000
# 3. 测试访问
curl http://127.0.0.1:9000/minio/health/live
⚠️ 重要: 同步脚本必须在68机器(从节点)上执行!
# 1. 进入部署脚本目录
cd /path/to/部署文档/生产环境双机部署方案/部署脚本/
# 2. 赋予执行权限
chmod +x setup-minio-replication.sh
# 3. 执行配置脚本
./setup-minio-replication.sh
配置脚本会自动完成:
/opt/minio-sync.sh)minio-sync.service)初始同步:将主节点现有数据全部同步到从节点(一次性操作)
# 在68机器上执行
mc mirror --remove --overwrite minio-master/ minio-slave/
说明:
--remove: 删除从节点中不存在于主节点的文件--overwrite: 覆盖已存在的文件查看同步进度:
# 实时查看同步日志
tail -f /var/log/minio-sync.log
# 1. 启动同步服务
systemctl start minio-sync
# 2. 设置开机自启
systemctl enable minio-sync
# 3. 查看服务状态
systemctl status minio-sync
服务说明:
watch 模式,实时监控主节点变化/var/log/minio-sync.log 和 journalctl# 在67机器上
echo "test file" > test-sync.txt
mc cp test-sync.txt minio-master/ruoyi/
# 在68机器上(等待几秒后)
mc ls minio-slave/ruoyi/ | grep test-sync.txt
# 在68机器上
tail -f /var/log/minio-sync.log
# 或
journalctl -u minio-sync -f
预期结果:
# 启动服务
systemctl start minio-sync
# 停止服务
systemctl stop minio-sync
# 重启服务
systemctl restart minio-sync
# 查看状态
systemctl status minio-sync
# 查看日志
journalctl -u minio-sync -f
tail -f /var/log/minio-sync.log
# 禁用开机自启
systemctl disable minio-sync
# 启用开机自启
systemctl enable minio-sync
如果不想使用实时同步(watch模式),可以使用定时同步:
# 1. 赋予执行权限
chmod +x /path/to/部署脚本/minio-sync-cron.sh
# 2. 添加到crontab(每5分钟同步一次)
(crontab -l 2>/dev/null; echo "*/5 * * * * /path/to/部署脚本/minio-sync-cron.sh >> /var/log/minio-sync-cron.log 2>&1") | crontab -
# 3. 查看crontab
crontab -l
定时同步说明:
# 在67机器上(主节点)
ps aux | grep minio
curl http://127.0.0.1:9000/minio/health/live
# 在68机器上(从节点)
ps aux | grep minio
systemctl status minio-sync
# 在67机器上创建测试文件
echo "sync test $(date)" > /tmp/sync-test-$(date +%s).txt
mc cp /tmp/sync-test-*.txt minio-master/ruoyi/
# 在68机器上检查(等待5-10秒)
mc ls minio-slave/ruoyi/ | grep sync-test
# 在67机器上删除文件
mc rm minio-master/ruoyi/sync-test-*.txt
# 在68机器上检查(等待5-10秒)
mc ls minio-slave/ruoyi/ | grep sync-test # 应该找不到
# 在67机器上创建目录和文件
mc mb minio-master/ruoyi/test-dir
echo "test" > /tmp/test.txt
mc cp /tmp/test.txt minio-master/ruoyi/test-dir/
# 在68机器上检查
mc ls minio-slave/ruoyi/test-dir/
# 测试网络连通性
ping 172.16.0.67
ping 172.16.0.68
telnet 172.16.0.67 9000
telnet 172.16.0.68 9000
当前配置:
minioadminminioadmin@123456⚠️ 生产环境建议:
主节点故障时:
建议:
# 检查服务状态
systemctl status minio-sync
# 查看详细日志
journalctl -u minio-sync -n 100
# 检查脚本权限
ls -l /opt/minio-sync.sh
chmod +x /opt/minio-sync.sh
# 手动测试脚本
/opt/minio-sync.sh
# 检查网络连通性
ping 172.16.0.67
telnet 172.16.0.67 9000
# 检查主节点服务
ssh 172.16.0.67 "ps aux | grep minio"
ssh 172.16.0.67 "curl http://127.0.0.1:9000/minio/health/live"
# 检查防火墙
firewall-cmd --list-all | grep 9000
# 检查网络延迟
ping -c 10 172.16.0.67
# 检查同步服务状态
systemctl status minio-sync
# 查看同步日志
tail -f /var/log/minio-sync.log
# 检查主节点负载
ssh 172.16.0.67 "top -bn1 | head -20"
# 手动触发同步
mc mirror --remove --overwrite minio-master/ minio-slave/
# 检查bucket大小
mc du minio-master/
mc du minio-slave/
# 检查文件数量
mc ls minio-master/ruoyi/ | wc -l
mc ls minio-slave/ruoyi/ | wc -l
# 1. 在68机器上执行配置脚本
cd 部署脚本/
chmod +x setup-minio-replication.sh
./setup-minio-replication.sh
# 2. 执行初始同步
mc mirror --remove --overwrite minio-master/ minio-slave/
# 3. 启动同步服务
systemctl start minio-sync
systemctl enable minio-sync
# 4. 查看服务状态
systemctl status minio-sync
tail -f /var/log/minio-sync.log
# 测试同步
echo "test" > test.txt
mc cp test.txt minio-master/ruoyi/
sleep 5
mc ls minio-slave/ruoyi/ | grep test.txt
# 查看同步日志
journalctl -u minio-sync -f
📝 文档版本: v1.0
🔄 最后更新: 2025-01-27
✅ 适用场景: 基于现有启动脚本的MinIO主从配置(67为主,68为从)