MongoDB備份策略在Linux環境中的應用
mongodump是MongoDB官方提供的邏輯備份工具,可將數據庫或集合數據導出為BSON格式文件,支持靈活的備份選項;mongorestore則用于恢復備份數據,是mongodump的配套工具。
mydb數據庫到/backup/mongodb目錄:mongodump --db mydb --out /backup/mongodb;備份mydb中的users集合:mongodump --db mydb --collection users --out /backup/mongodb。--gzip選項減少備份文件體積,節省存儲空間。例如:mongodump --db mydb --out /backup/mongodb --gzip。--username、--password和--authenticationDatabase參數。例如:mongodump --host localhost --port 27017 --username admin --password 123456 --authenticationDatabase admin --out /backup/mongodb。mongorestore恢復備份。例如,恢復mydb數據庫到測試環境:mongorestore --db test /backup/mongodb/mydb;恢復users集合:mongorestore --db mydb --collection users /backup/mongodb/mydb/users.bson。通過Linux的crontab工具設置定時任務,實現定期自動備份,避免人工遺漏。
/data/backup/mongodb_backup.sh,內容如下:#!/bin/bash
BACKUP_DIR="/backup/mongodb"
DATE=$(date +%Y%m%d%H%M%S)
mkdir -p $BACKUP_DIR/$DATE
mongodump --out $BACKUP_DIR/$DATE --gzip
tar -czvf $BACKUP_DIR/$DATE.tar.gz $BACKUP_DIR/$DATE
rm -rf $BACKUP_DIR/$DATE
echo "$(date): Backup completed: $BACKUP_DIR/$DATE.tar.gz" >> /var/log/mongodb_backup.log
賦予執行權限:chmod +x /data/backup/mongodb_backup.sh。crontab(sudo crontab -e),添加以下行實現每天凌晨2點執行備份:0 2 * * * /data/backup/mongodb_backup.sh。增量備份僅備份自上次備份以來變化的數據,節省存儲空間和備份時間。
mongodump --oplog --out /backup/mongodb_incremental,該命令會導出oplog并生成增量備份。rsync工具同步數據目錄,僅復制變化的文件。例如:rsync -avz --delete /var/lib/mongodb/ /backup/mongodb_incremental/,其中--delete選項會刪除目標目錄中源目錄不存在的文件,保持同步。物理備份是直接復制MongoDB數據目錄(默認/var/lib/mongodb)的文件,恢復速度快,適合大規模數據。
sudo systemctl stop mongod。sudo cp -r /var/lib/mongodb /backup/mongodb_physical。sudo systemctl start mongod。第三方工具提供更高級的功能(如增量備份、壓縮、加密、云存儲集成),適合企業級需求。
rsync將備份同步到遠程服務器:rsync -avz /backup/mongodb/ user@remote:/remote/backup/mongodb/。find命令刪除舊備份,節省存儲空間。例如,刪除7天前的備份文件:find /backup/mongodb -type f -mtime +7 -exec rm {} \;。echo "$(date): Backup started" >> /var/log/mongodb_backup.log,mongodump ... >> /var/log/mongodb_backup.log 2>&1。Prometheus+Grafana監控備份進程,設置告警規則(如備份失敗時發送郵件/短信通知),及時處理問題。定期測試備份文件的完整性,確保在災難發生時能成功恢復數據。
/backup/mongodb/20250901.tar.gz),解壓:tar -xzvf /backup/mongodb/20250901.tar.gz。mongorestore --db test_restore /backup/mongodb/20250901。test_restore數據庫中的數據是否與備份時一致。