CentOS 上 MongoDB 备份策略落地方案
一 策略总览与保留目标
二 在 CentOS 上实施 mongodump 日备与自动清理
mkdir -p /data/backup/mongodb/{daily,archive}。use admin; db.createUser({user:"bk", pwd:"StrongPass!", roles:[{role:"backup", db:"admin"}]})/usr/local/bin/mongo_backup.sh`#!/usr/bin/env bash set -Eeuo pipefail TS=$(date +“%F_%H-%M-%S”) OUT_DIR=“/data/backup/mongodb/daily/${TS}” ARC_DIR=“/data/backup/mongodb/archive” RET_DAYS=7 HOST=“127.0.0.1”; PORT=27017; USER=“bk”; PASS=“StrongPass!”
mkdir -p “$OUT_DIR”
mongodump
–host “$HOST” --port “$PORT”
–username “$USER” --password “$PASS”
–authenticationDatabase “admin”
–gzip --archive=“$OUT_DIR/backup_${TS}.archive.gz”
if [[ -s “$OUT_DIR/backup_${TS}.archive.gz” ]]; then ln -f “$OUT_DIR/backup_${TS}.archive.gz” “$ARC_DIR/backup_latest.gz” find “$ARC_DIR” -name “backup_*.gz” -mtime +${RET_DAYS} -delete else echo “Backup empty or failed: $OUT_DIR” >&2 exit 1 fi
rm -rf “$OUT_DIR” `
chmod +x /usr/local/bin/mongo_backup.shecho "0 2 * * * root /usr/local/bin/mongo_backup.sh >> /var/log/mongo_backup.log 2>&1" | tee -a /etc/crontabmongorestore --gzip --archive=/data/backup/mongodb/archive/backup_2026-01-01_02-00-00.archive.gzmongorestore --gzip --archive=/path/file.gz --nsInclude=db1.*mongorestore --drop ...(谨慎使用)三 进阶方案与性能优化
mongodump --oplog --gzip --archive=... 获取一致性点之后的变更;恢复时先恢复最近全量,再回放 oplog 到目标时间点。--gzip 与 --archive 减少空间占用与 I/O;必要时调大并发集合导出参数(如 --numParallelCollections)。四 监控 校验 与常见故障排查