一、備份流程
確保系統已安裝mongodb-tools
包(包含mongodump
、mongorestore
等工具),若未安裝可通過以下命令安裝:
sudo apt update && sudo apt install mongodb-tools
mongodump
工具備份MongoDB實例中的所有數據庫,備份文件默認以BSON格式存儲。mongodump --out /path/to/backup/directory
(如mongodump --out /home/ubuntu/mongodb_backup
)。--db
參數指定數據庫名稱,僅備份目標數據庫。mongodump --db your_database_name --out /path/to/backup/directory
(如mongodump --db mydb --out /home/ubuntu/mongodb_backup
)。--db
和--collection
參數,備份指定數據庫中的單個集合。mongodump --db your_database_name --collection your_collection_name --out /path/to/backup/directory
(如mongodump --db mydb --collection users --out /home/ubuntu/mongodb_backup
)。--username
和--password
參數(替換為實際用戶名和密碼)。mongodump --host localhost --port 27017 --username admin --password 123456 --db mydb --out /home/ubuntu/mongodb_backup
。為節省存儲空間,可使用tar
命令將備份目錄壓縮為.tar.gz
格式。
示例命令:tar -czvf mongodb_backup_$(date +%Y%m%d).tar.gz /path/to/backup/directory
(如tar -czvf mongodb_backup_20250927.tar.gz /home/ubuntu/mongodb_backup
)。
通過cron
定時任務實現定期自動備份,例如每天凌晨2點執行全量備份并保留7天內的備份文件。
crontab -e
。0 2 * * * mkdir -p /backups/mongodb/$(date +\%Y-\%m-\%d) && mongodump --out /backups/mongodb/$(date +\%Y-\%m-\%d) && tar -czvf /backups/mongodb_$(date +\%Y%m%d).tar.gz /backups/mongodb/$(date +\%Y-\%m-\%d) && find /backups -name "mongodb_*.tar.gz" -mtime +7 -exec rm {} \;
定期通過mongorestore --dryRun
命令模擬恢復過程,檢查備份文件的完整性和可用性(無需實際恢復數據)。
示例命令:mongorestore --dryRun /path/to/backup/directory
(如mongorestore --dryRun /home/ubuntu/mongodb_backup
)。
二、恢復流程
sudo systemctl stop mongod
。mongodump --out /path/to/current_data_backup
(如mongodump --out /home/ubuntu/current_data_backup
)。mongorestore
工具恢復備份目錄中的所有數據庫,覆蓋現有數據。mongorestore /path/to/backup/directory
(如mongorestore /home/ubuntu/mongodb_backup
)。--db
參數指定目標數據庫名稱,僅恢復該數據庫。mongorestore --db your_database_name /path/to/backup/directory/your_database_name
(如mongorestore --db mydb /home/ubuntu/mongodb_backup/mydb
)。--db
和--collection
參數,恢復指定數據庫中的單個集合。mongorestore --db your_database_name --collection your_collection_name /path/to/backup/directory/your_database_name/your_collection_name.bson
(如mongorestore --db mydb --collection users /home/ubuntu/mongodb_backup/mydb/users.bson
)。--username
和--password
參數。mongorestore --host localhost --port 27017 --username admin --password 123456 /path/to/backup/directory
。sudo systemctl start mongod
。mongo
shell連接MongoDB,檢查目標數據庫和集合中的數據是否恢復成功。mongo
use your_database_name
db.your_collection_name.find()
說明:將your_database_name
替換為目標數據庫名稱,your_collection_name
替換為目標集合名稱。三、注意事項
sudo
提升權限(如sudo mongodump
、sudo mongorestore
),但需注意備份文件的歸屬權限。