CentOS 上 MongoDB 备份策略与落地步骤
一 策略总览与选择
二 落地方案一 mongodump 定时全量 + 压缩 + 保留策略(通用且易维护)
#!/usr/bin/env bash
set -Eeuo pipefail
# 配置
HOST="127.0.0.1"
PORT="27017"
AUTH_DB="admin"
USER="backup_user"
PASS="StrongPassw0rd!"
BACKUP_ROOT="/var/backups/mongodb"
RETENTION_DAYS=7
TIMESTAMP=$(date +%F_%H-%M-%S)
OUT_DIR="$BACKUP_ROOT/$TIMESTAMP"
ARC_FILE="$BACKUP_ROOT/mongodump_${TIMESTAMP}.tar.gz"
# 创建目录
mkdir -p "$OUT_DIR"
# 执行备份(可按需添加 --gzip;如有权限问题请检查 auth/网络)
mongodump \
--host "$HOST" --port "$PORT" \
--authenticationDatabase "$AUTH_DB" \
-u "$USER" -p "$PASS" \
--out "$OUT_DIR" \
--gzip
# 打包归档
tar -zcf "$ARC_FILE" -C "$OUT_DIR" .
# 校验并清理
if tar -tzf "$ARC_FILE" >/dev/null 2>&1; then
echo "Backup OK: $ARC_FILE"
find "$BACKUP_ROOT" -name "mongodump_*.tar.gz" -mtime +"$RETENTION_DAYS" -delete
find "$BACKUP_ROOT" -mindepth 1 -maxdepth 1 -type d -mtime +"$RETENTION_DAYS" -exec rm -rf {} +
else
echo "Backup FAILED: $ARC_FILE"
exit 1
fi
chmod +x /usr/local/bin/mongo_backup.shcrontab -e 添加0 2 * * * /usr/local/bin/mongo_backup.sh >> /var/log/mongo_backup.log 2>&1
mongorestore --drop -d <dbname> /var/backups/mongodb/<timestamp>/<dbname>mongorestore --drop /var/backups/mongodb/<timestamp>/三 落地方案二 文件系统快照与从节点备份(适合大型与高写入)
四 企业级与云上方案
五 关键注意事项与验证清单