83 lines
2.2 KiB
Bash
83 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
# MinIO主从同步脚本(定时同步版本)
|
|
# 版本: 1.0
|
|
# 描述: 定时从主节点(67)同步数据到从节点(68)
|
|
# 使用场景: 如果不想使用watch模式,可以使用此脚本配合crontab定时同步
|
|
|
|
set -e
|
|
|
|
# 配置参数
|
|
MASTER_IP="172.16.0.67"
|
|
SLAVE_IP="172.16.0.68"
|
|
MASTER_PORT="9000"
|
|
SLAVE_PORT="9000"
|
|
MINIO_USER="minioadmin"
|
|
MINIO_PASSWORD="minioadmin@123456"
|
|
|
|
# 日志文件
|
|
SYNC_LOG="/var/log/minio-sync-cron.log"
|
|
|
|
# 日志函数
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$SYNC_LOG"
|
|
}
|
|
|
|
log "========================================="
|
|
log "开始MinIO主从同步(定时同步)"
|
|
log "========================================="
|
|
|
|
# 检查MinIO客户端
|
|
if ! command -v mc &> /dev/null; then
|
|
log "错误: MinIO客户端未安装,请先运行 setup-minio-replication.sh"
|
|
exit 1
|
|
fi
|
|
|
|
# 配置别名
|
|
mc alias set minio-master "http://${MASTER_IP}:${MASTER_PORT}" "$MINIO_USER" "$MINIO_PASSWORD" 2>/dev/null
|
|
mc alias set minio-slave "http://${SLAVE_IP}:${SLAVE_PORT}" "$MINIO_USER" "$MINIO_PASSWORD" 2>/dev/null
|
|
|
|
# 检查主节点连接
|
|
if ! mc ls minio-master &> /dev/null; then
|
|
log "错误: 无法连接到主节点 ($MASTER_IP:$MASTER_PORT)"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查从节点连接
|
|
if ! mc ls minio-slave &> /dev/null; then
|
|
log "错误: 无法连接到从节点 ($SLAVE_IP:$SLAVE_PORT)"
|
|
exit 1
|
|
fi
|
|
|
|
log "连接检查通过,开始同步..."
|
|
|
|
# 执行同步
|
|
# --remove: 删除目标中不存在于源的文件
|
|
# --overwrite: 覆盖已存在的文件
|
|
# --quiet: 减少输出
|
|
log "执行同步命令: mc mirror --remove --overwrite minio-master/ minio-slave/"
|
|
|
|
SYNC_START_TIME=$(date +%s)
|
|
|
|
if mc mirror --remove --overwrite minio-master/ minio-slave/ >> "$SYNC_LOG" 2>&1; then
|
|
SYNC_END_TIME=$(date +%s)
|
|
SYNC_DURATION=$((SYNC_END_TIME - SYNC_START_TIME))
|
|
|
|
log "✓ 同步成功完成,耗时: ${SYNC_DURATION}秒"
|
|
|
|
# 显示同步统计
|
|
log "同步统计:"
|
|
mc du minio-master/ | tee -a "$SYNC_LOG"
|
|
mc du minio-slave/ | tee -a "$SYNC_LOG"
|
|
|
|
exit 0
|
|
else
|
|
SYNC_END_TIME=$(date +%s)
|
|
SYNC_DURATION=$((SYNC_END_TIME - SYNC_START_TIME))
|
|
|
|
log "✗ 同步失败,耗时: ${SYNC_DURATION}秒"
|
|
log "请查看日志: $SYNC_LOG"
|
|
exit 1
|
|
fi
|
|
|