全量備份
使用 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()