1. 全量备份(Full Backup)
全量备份是MongoDB备份的基础策略,通过mongodump工具导出数据库或集合的完整数据及元数据(如索引、用户权限)。常用命令示例:
# 备份所有数据库到指定目录(目录名包含时间戳)
mongodump --host localhost --port 27017 -u root -p 123456 --authenticationDatabase admin --gzip --out /backup/mongodb/$(date +%Y%m%d)
特点:数据完整,恢复时可直接还原整个数据库;但备份时间长、占用存储空间大,适合定期执行(如每周1次)。
2. 增量备份(Incremental Backup)
增量备份仅备份自上次备份(全量或增量)以来变更的数据,依赖MongoDB的**oplog(操作日志)**实现。需先确保数据库运行在副本集模式(单机可通过rs.initiate()转换为单节点副本集)。
mongosh查询local.oplog.rs集合的最后一条记录);mongodump --host localhost --port 27017 --db local --collection oplog.rs --query '{"ts": {"$gt": Timestamp(1717600000, 1)}}' --out /backup/mongodb/incremental/$(date +%Y%m%d)
特点:备份速度快、存储开销小,适合高频数据变更的场景(如每日1次);但恢复时需依次应用全量备份和所有增量备份的oplog。
3. 物理备份(Physical Backup)
物理备份直接复制MongoDB的数据目录(默认/var/lib/mongo),保留数据的物理结构(如WiredTiger存储引擎的文件)。常用工具:
rsync -av --delete /var/lib/mongo/ /backup/mongodb/physical/$(date +%Y%m%d)
innobackupex --user=mongouser --password=123456 --host localhost --port 27017 /backup/mongodb/xtrabackup
特点:备份速度快、恢复时间短,适合生产环境的高可用需求;但无法实现粒度的恢复(如单个集合)。
4. 自动化备份(Automated Backup)
通过crontab设置定时任务,自动执行备份脚本(包含mongodump/rsync命令),避免人工遗漏。
/home/mongodb/backup.sh),内容示例:#!/bin/bash
BACKUP_DIR="/backup/mongodb/$(date +%Y%m%d)"
mongodump --host localhost --port 27017 -u root -p 123456 --authenticationDatabase admin --gzip --out $BACKUP_DIR
find $BACKUP_DIR -type f -mtime +7 -delete # 删除7天前的备份
② 添加执行权限:chmod +x /home/mongodb/backup.sh;
③ 编辑crontab(sudo crontab -e),添加定时任务(如每天凌晨2点执行):
0 2 * * * /home/mongodb/backup.sh
特点:减少人工干预,提高备份的一致性;需配合日志监控(如tail -f /var/log/cron)确保任务正常执行。
5. 备份管理与验证
tar -czvf /backup/mongodb_$(date +%Y%m%d).tar.gz /backup/mongodb/$(date +%Y%m%d)),节省存储空间;将备份存储到异地(如云存储、NAS)或离线介质(如磁带),防止本地灾难导致数据丢失。find命令删除过期备份(如保留30天内的备份):find /backup/mongodb -type d -mtime +30 -delete
mongorestore --host localhost --port 27017 --authenticationDatabase admin /backup/mongodb/20250930
重要性:确保备份策略的有效性,避免“备份无用”的情况发生。