温馨提示×

MongoDB在Linux环境中的备份策略

小樊
35
2025-11-24 19:20:44
栏目: 云计算

MongoDB在Linux环境中的备份策略

一 策略总览与选择

  • 备份方式
    • 逻辑备份:使用 mongodump 导出为 BSON,支持按库、按集合、按查询条件导出,便于迁移与部分恢复;可配合 –gzip 压缩节省空间。适合大多数场景与中小规模数据。
    • 物理备份:直接拷贝数据目录(如 /var/lib/mongodb),一致性要求高,通常通过停机或文件系统快照实现,恢复速度快,适合大体量或对 RTO 要求较高的场景。
    • 实时可用性:通过 副本集(Replica Set) 提供高可用与近实时备份源,必要时从从节点导出,降低对主节点影响。
    • 第三方与云:如 Percona Backup for MongoDB(PBM) 支持增量备份,适合需要更细粒度恢复点目标(RPO)的业务;托管云 MongoDB Atlas 自带备份能力。
  • 存储与保留
    • 建议采用“本地快速盘 + 远端/云端”的双地存储,定期清理旧备份,保留策略结合业务 RPO/RTO 设定(如近 7–30 天)。
  • 自动化与监控
    • 使用 cron 定时执行备份脚本,统一日志与告警;定期做恢复演练与备份完整性校验。

二 备份方式与适用场景对比

方式 工具/机制 优点 局限 典型场景
逻辑备份 mongodump(可加 –gzip 灵活、可按库/集合/查询导出、便于迁移与部分恢复 导出/导入开销较大,大数据量较慢 日常备份、跨版本迁移、开发/测试数据供给
物理备份 拷贝 dbPath(停机或快照) 速度快、恢复快、适合大体量 需一致性保障,跨版本/跨平台受限 大库、低RTO要求、同版本恢复
实时可用性 副本集 从节点导出 不影响主节点、近实时 非真正备份,仍需定期落盘/快照 高可用架构、降低主库备份压力
第三方/云 PBMAtlas 备份 PBM支持增量;Atlas一键化 依赖产品能力/成本 企业级备份、云上托管场景

三 自动化备份脚本与定时任务

  • 示例脚本(保留近 15 天,压缩归档,适配认证)
#!/usr/bin/env bash
set -Eeuo pipefail

DUMP="/usr/bin/mongodump"                 # mongodump路径
OUT_DIR="/data/backup/mongo/tmp"         # 临时导出目录
TAR_DIR="/data/backup/mongo/archive"    # 归档目录
DATE=$(date +%Y_%m_%d_%H_%M)
DB_USER="backup_user"
DB_PASS="StrongPassw0rd!"
DAYS=15
TAR_BAK="mongodb_bak_${DATE}.tar.gz"

# 创建目录
mkdir -p "$OUT_DIR" "$TAR_DIR"

# 全库导出(可按需改为 -d 指定库)
"$DUMP" \
  --host 127.0.0.1 --port 27017 \
  --username "$DB_USER" --password "$DB_PASS" \
  --authenticationDatabase "admin" \
  --out "$OUT_DIR/$DATE" \
  --gzip

# 打包归档
tar -zcvf "$TAR_DIR/$TAR_BAK" -C "$OUT_DIR" "$DATE"

# 清理临时导出
rm -rf "$OUT_DIR/$DATE"

# 清理过期归档
find "$TAR_DIR" -name "mongodb_bak_*.tar.gz" -mtime +$DAYS -delete

echo "Backup finished: $TAR_DIR/$TAR_BAK"
  • 定时任务(每天 02:00 执行)
# 编辑当前用户crontab
crontab -e
# 每天02:00执行,标准输出/错误重定向到日志
0 2 * * * /usr/bin/bash /data/script/mongo_backup.sh >>/var/log/mongo_backup.log 2>&1
  • 要点
    • 认证库使用 –authenticationDatabase(常见为 admin)。
    • 备份与归档分离,便于传输与保留策略管理。
    • 建议将备份目录与数据库目录置于不同磁盘/存储。

四 恢复流程与关键参数

  • 逻辑备份恢复
    • 全库恢复:mongorestore --host 127.0.0.1 --port 27017 --dir /data/backup/mongo/archive/mongodb_bak_2025_04_01_02_00
    • 指定库恢复:mongorestore --host 127.0.0.1 --port 27017 -d mydb --dir /data/backup/mongo/archive/mongodb_bak_2025_04_01_02_00/mydb
    • 常用参数:
      • –drop:恢复前删除目标库/集合(谨慎使用)。
      • –noIndexRestore:先恢复数据后建索引,缩短导入时间。
  • 物理备份恢复
    • 建议停机后替换数据目录并启动:
      • sudo systemctl stop mongod
      • sudo rsync -a /path/to/backup/mongodb/ /var/lib/mongodb/
      • sudo systemctl start mongod
  • 校验
    • 核对恢复后集合/文档数、索引与大小;定期抽样恢复演练。

五 企业级增强与注意事项

  • 增量与时间点恢复:引入 Percona Backup for MongoDB(PBM) 实现 增量备份 与时间点恢复,降低 RPO
  • 云托管:使用 MongoDB Atlas 的自动备份与一键恢复,减少运维复杂度。
  • 文件系统快照:在支持快照的 LVM/ZFS 等上执行一致性快照,可快速获得接近实时的备份点(需确保 WiredTiger 缓存落盘)。
  • 安全与合规:备份数据 加密存储与传输,限制访问权限;对敏感数据脱敏后再做导出/共享。
  • 监控与演练:对备份任务做 成功/失败告警容量监控,定期做恢复演练与校验和验证,确保可用性与完整性。

0