全量备份
使用 mongodump
备份整个数据库或指定集合,支持增量备份(通过 --oplog
或 --since
参数)。
示例:
mongodump --host localhost --port 27017 --db mydb --out /backups/mongodb/full_$(date +%Y%m%d)
增量备份
基于全量备份,通过 --oplog
参数备份自上次备份以来的变更。
示例:
mongodump --host localhost --port 27017 --oplog --out /backups/mongodb/incremental_$(date +%Y%m%d)
自动化备份
通过 cron
定时任务执行备份脚本,结合压缩和保留策略(如保留7天每日备份、4周每周备份)。
示例脚本:
#!/bin/bash
BACKUP_DIR="/backups/mongodb"
DATE=$(date +%Y%m%d)
mongodump --host localhost --port 27017 --out $BACKUP_DIR/$DATE
tar -czvf $BACKUP_DIR/mongodb_$DATE.tar.gz $BACKUP_DIR/$DATE
find $BACKUP_DIR -name "mongodb_*.tar.gz" -mtime +7 -exec rm {} \;
异地与加密备份
将备份文件存储至远程服务器或云存储,敏感数据可加密(如使用 gpg
)。
全量恢复
停止 MongoDB 服务,删除原有数据(可选),用 mongorestore
恢复备份。
示例:
sudo systemctl stop mongod
mongorestore --db mydb /backups/mongodb/full_20250915
sudo systemctl start mongod
增量恢复
按时间顺序依次恢复全量备份和增量备份,需确保 oplog
已启用。
示例:
mongorestore --oplogReplay --db mydb /backups/mongodb/incremental_20250915
验证恢复
通过 mongo
shell 连接数据库,检查数据完整性和一致性。
示例:
mongo
use mydb
db.collection.find()