温馨提示×

mongodb备份策略centos上怎么定

小樊
38
2026-01-02 02:39:31
栏目: 云计算

CentOS 上 MongoDB 备份策略落地方案

一 策略总览与保留目标

  • 备份类型与适用场景
    • 逻辑备份:使用 mongodump,适合中小型数据库、跨版本迁移、按库/集合导出;支持压缩与归档,便于传输与长期留存。
    • 物理备份:基于 LVM/文件系统快照 或云盘快照,适合大型数据库,速度快、影响小,但依赖底层存储能力。
    • 增量/时间点:启用 oplog 做增量或近实时备份,适合需要RPO 更小的业务;恢复流程相对复杂。
    • 托管服务:使用 MongoDB Atlas 自动备份与点时间恢复(仅限 Atlas)。
  • 推荐保留与调度
    • 日备:每日全量保留 7 天(快速回滚最近变更)。
    • 周备:每周全量保留 4 周(月度基线)。
    • 月备:每月全量保留 12 个月(长期合规/审计)。
  • 目标指标
    • RPO(恢复点目标):由备份频率与是否启用 oplog 决定;无 oplog 时≈两次全量间隔,有 oplog 可显著降低。
    • RTO(恢复时间目标):逻辑备份恢复通常慢于物理/快照;结合业务窗口设定演练目标。

二 在 CentOS 上实施 mongodump 日备与自动清理

  • 准备与权限
    • 创建备份目录:mkdir -p /data/backup/mongodb/{daily,archive}
    • 创建具备备份权限的账号(示例角色 backup):
      • use admin; db.createUser({user:"bk", pwd:"StrongPass!", roles:[{role:"backup", db:"admin"}]})
    • 建议将备份任务放到 Secondary 节点或维护时段执行,降低对线上影响。
  • 备份脚本示例(支持压缩归档与过期清理)
    • 文件:/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.sh
  • 定时任务
    • 每天 02:00 执行:echo "0 2 * * * root /usr/local/bin/mongo_backup.sh >> /var/log/mongo_backup.log 2>&1" | tee -a /etc/crontab
    • 如脚本已包含日志输出,无需重复重定向。
  • 恢复示例
    • 全量恢复:mongorestore --gzip --archive=/data/backup/mongodb/archive/backup_2026-01-01_02-00-00.archive.gz
    • 按库恢复:mongorestore --gzip --archive=/path/file.gz --nsInclude=db1.*
    • 覆盖写入:mongorestore --drop ...(谨慎使用)

三 进阶方案与性能优化

  • 物理备份与快照
    • 适用 LVM/XFS/云盘快照 等具备快照能力的存储;快照前确保 WiredTiger 检查点 完成,快照期间避免大事务。
    • 恢复时基于快照快速回滚,RTO 通常优于逻辑备份。
  • 增量/时间点恢复
    • 副本集 环境启用 oplogmongodump --oplog --gzip --archive=... 获取一致性点之后的变更;恢复时先恢复最近全量,再回放 oplog 到目标时间点。
    • 复杂度与运维要求较高,但可将 RPO 降至分钟级。
  • 性能与稳定性建议
    • Secondary 上备份,避开业务高峰。
    • 使用 --gzip--archive 减少空间占用与 I/O;必要时调大并发集合导出参数(如 --numParallelCollections)。
    • 定期做 备份完整性校验(文件大小/校验和/抽样恢复)。

四 监控 校验 与常见故障排查

  • 监控与告警
    • 备份成功率(每日)、备份耗时、备份大小环比、磁盘使用率(阈值如 ≥80% 告警)、MongoDB 连接数/延迟。
  • 校验与演练
    • 每周抽样恢复到一个隔离实例,验证 数据一致性应用可用性;保留演练记录与恢复时间。
  • 常见故障速查
    • 连接失败/认证失败:检查 bindIp(如从 127.0.0.1 改为 0.0.0.0 以允许远程备份)、auth 是否开启、账号权限与网络连通性。
    • 备份文件为空:确认 mongodump 返回码、磁盘空间、是否对 admin 鉴权、是否使用了正确的数据库/集合参数。

0