一、备份流程
确保系统已安装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),但需注意备份文件的归属权限。