温馨提示×

MongoDB在Debian上如何备份策略

小樊
45
2025-11-15 13:12:37
栏目: 云计算

MongoDB 在 Debian 上的备份策略

一 策略总览

  • 备份方式以官方工具为主:使用 mongodump 做逻辑备份,配合 mongorestore 恢复;在 副本集 场景开启 oplog 可实现时间点恢复(PITR)。
  • 运行方式:单实例可直接连接本地实例;副本集需连接到 mongos 或各 secondary 节点执行导出。
  • 存储与保留:本地保留近 7 天,每周做归档并同步到远端(如对象存储/异地机房),避免单点故障。
  • 自动化与监控:用 cron 定时执行脚本,记录日志与返回码,定期做恢复演练与容量评估。

二 工具与准备

  • 安装客户端工具(仅备份无需安装 mongod):
    sudo apt update && sudo apt install -y mongodb-clients
  • 创建备份目录并设定权限:
    sudo mkdir -p /backup/mongodb && sudo chown mongodb:mongodb /backup/mongodb
  • 认证与连接:如使用 SCRAM 认证,准备具有备份权限的账号,并在命令中指定 –username–password–authenticationDatabase admin

三 备份方法与命令

  • 全量备份(单库/全库)
    • 全库:mongodump --host localhost --port 27017 --out /backup/mongodb/$(date +%Y%m%d%H%M%S)
    • 单库:mongodump --host localhost --port 27017 --db mydb --out /backup/mongodb/mydb-$(date +%Y%m%d%H%M%S)
    • 认证示例:mongodump --host localhost --port 27017 --username backup --password ******* --authenticationDatabase admin --out /backup/mongodb/…
  • 压缩归档(节省空间)
    • 目录打包:tar -czvf /backup/mongodb/backup-$(date +%Y%m%d%H%M%S).tar.gz /backup/mongodb/2025…
  • 时间点恢复能力(副本集)
    • 备份:mongodump --host rs0/… --oplog --out /backup/mongodb/oplog-$(date +%Y%m%d%H%M%S)
    • 恢复:mongorestore --oplogReplay /backup/mongodb/oplog-…
  • 远程/云存储(示例思路)
    • 备份完成后用 scp/rsync 或云 SDK 将压缩包同步到远端存储,确保异地可用。

四 自动化与保留策略

  • 示例备份脚本(含压缩与保留 7 天)
    #!/bin/bash
    set -e
    BACKUP_DIR=“/backup/mongodb”
    DATE=$(date +%Y%m%d%H%M%S)
    OUT_DIR=“$BACKUP_DIR/$DATE”
    mkdir -p “$OUT_DIR”
    mongodump --host localhost --port 27017 --out “$OUT_DIR”
    tar -czvf “$BACKUP_DIR/backup-$DATE.tar.gz” -C “$OUT_DIR” .
    rm -rf “$OUT_DIR”

    保留最近 7 天

    find “$BACKUP_DIR” -name “backup-*.tar.gz” -mtime +7 -delete
    echo “Backup $DATE completed.”
  • 定时任务(每天 02:00 执行):
    0 2 * * * /usr/bin/bash /usr/local/bin/backup_mongodb.sh >> /var/log/mongodb-backup.log 2>&1
  • 建议:为脚本添加锁文件避免并发;将日志接入 logrotate;保留策略可按“7 天本地 + 每周归档长期保存”执行。

五 恢复与验证

  • 基本恢复(目录备份)
    mongorestore /backup/mongodb/2025…/mydb
  • 压缩包恢复
    mkdir -p /restore/2025…
    tar -xzvf /backup/mongodb/backup-2025…tar.gz -C /restore/2025…
    mongorestore /restore/2025…/2025…/mydb
  • 时间点恢复(副本集)
    mongorestore --oplogReplay /backup/mongodb/oplog-2025…
  • 一致性建议:
    • 单机/测试环境可在恢复前停止 mongod;生产环境优先采用在线恢复并评估对业务的影响。
    • 恢复前先备份当前库;恢复后在业务低峰期校验集合行数、索引与关键业务查询。

0