温馨提示×

MongoDB在CentOS中的数据备份方法

小樊
43
2025-11-23 19:26:09
栏目: 云计算

MongoDB在CentOS中的数据备份方法

一 常用备份方式与适用场景

  • 逻辑备份 mongodump/mongorestore:导出为 BSON 文件,便于按库/集合恢复、迁移与审计,适合大多数业务场景与副本集/分片集群的日常备份。
  • 物理备份(文件系统快照/企业备份):直接拷贝数据文件或使用企业级工具,恢复速度快、适合TB级数据,但要求一致性快照与更严格的运维流程。
  • 云托管备份:如使用 Atlas,可直接利用其持续备份时间点恢复能力,减少自建运维复杂度。

二 使用 mongodump 进行逻辑备份

  • 安装工具包(若未安装):执行 sudo yum install -y mongodb-org-tools
  • 创建备份目录:执行 sudo mkdir -p /backup/mongodb
  • 基本全量备份:执行 mongodump --out /backup/mongodb/$(date +%Y-%m-%d_%H-%M-%S)
  • 指定主机/端口/库:执行 mongodump -h <host> --port <port> -d <db> -o <out_dir>
  • 启用鉴权:在命令中加入 -u <user> -p <password>,或配置 URImongodump --uri "mongodb://user:pass@host:port/db"
  • 压缩归档:例如 tar -czvf /backup/mongodb_$(date +%F).tar.gz -C /backup/mongodb <timestamped_folder>
  • 常用恢复:
    • 全量恢复:mongorestore /backup/mongodb/<timestamped_folder>
    • 指定库:mongorestore --db <db> /backup/mongodb/<timestamped_folder>/<db>
    • 指定集合:mongorestore --db <db> --collection <coll> /backup/mongodb/<timestamped_folder>/<db>/<coll>.bson
  • 远程备份:将备份目录同步到远端,例如 rsync -avz /backup/mongodb/ user@remote:/pathscp -r /backup/mongodb/ user@remote:/path
  • 备份日志:记录过程便于排查,例如 mongodump --out <out> --logpath /var/log/mongodb/backup.log

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

  • 备份脚本示例(含压缩与保留策略):
#!/bin/bash
set -e
DUMP="/usr/bin/mongodump"
OUT_DIR="/backup/mongodb/tmp"
TAR_DIR="/backup/mongodb"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
DAYS=14

mkdir -p "$OUT_DIR" "$TAR_DIR"
OUT_PATH="$OUT_DIR/$DATE"

# 如需鉴权,取消下一行注释并填写凭据
# AUTH="--uri mongodb://user:pass@localhost:27017"

$DUMP --out "$OUT_PATH" $AUTH --logpath "$OUT_PATH/backup.log"

tar -czf "$TAR_DIR/mongodb_$DATE.tar.gz" -C "$OUT_DIR" "$DATE"
rm -rf "$OUT_PATH"

# 清理旧备份
find "$TAR_DIR" -name "mongodb_*.tar.gz" -mtime +$DAYS -delete
echo "Backup finished: $TAR_DIR/mongodb_$DATE.tar.gz"
  • 赋予执行权限:chmod +x /data/backup/mongod.sh
  • 定时任务(每天 02:00 执行):sudo crontab -e,添加 0 2 * * * /data/backup/mongod.sh
  • 建议将脚本与备份目录归属 mongod 运行用户,避免权限问题:chown -R mongod:mongod /backup/mongodb /data/backup

四 恢复与验证

  • 解压并恢复:tar -xzvf /backup/mongodb_2025-08-01.tar.gz -C / && mongorestore /backup/mongodb_2025-08-01
  • 按库/集合恢复:
    • 库级:mongorestore --db mydb /backup/mongodb_2025-08-01/mydb
    • 集合级:mongorestore --db mydb --collection users /backup/mongodb_2025-08-01/mydb/users.bson
  • 演练验证:在测试环境定期抽样恢复,或用 --dryRun 校验可恢复性;必要时使用 --drop 在恢复前清理同名集合(生产慎用)。

五 实践建议与注意事项

  • 备份时段与性能:在业务低峰执行,备份会产生大量 I/O;必要时限速或错峰。
  • 一致性:副本集建议连接到隐藏/延迟节点secondary执行逻辑备份,降低对线上影响;对强一致要求场景,可在维护窗口内操作。
  • 鉴权与网络:为备份专用账号授予最小权限(如 backup/restore 角色);限制备份网络访问。
  • 存储与保留:监控磁盘空间,按保留天数清理旧备份;异地/云端二次拷贝提升容灾能力。
  • 物理备份补充:若采用文件系统快照或企业工具,需保证一致性快照恢复流程演练;对 WiredTiger 存储引擎,注意检查点一致性。
  • 安全:避免在脚本中硬编码密码,优先使用 URI 或凭据文件,并设置合适的文件权限。

0