在进行备份恢复前,需确保以下条件满足:
mongodb-tools(包含mongodump、mongorestore等工具),需通过以下命令安装:sudo apt update
sudo apt install mongodb-tools
sudo systemctl start mongod # 启动服务
sudo systemctl enable mongod # 设置开机自启
以上步骤适用于Ubuntu 22.04及以上版本,MongoDB 4.x/5.x/6.x/7.x版本均兼容。
使用mongodump工具备份所有数据库,备份文件以目录形式存储(每个数据库一个子目录):
mongodump --out /path/to/backup/directory
示例(备份到/home/user/mongodb_backup):
mongodump --out /home/user/mongodb_backup
若只需备份单个数据库,可通过--db参数指定数据库名:
mongodump --db your_database_name --out /path/to/backup/directory
示例(备份mydatabase数据库到/home/user/mongodb_backup):
mongodump --db mydatabase --out /home/user/mongodb_backup
若只需备份数据库中的某个集合(表),可结合--db和--collection参数:
mongodump --db your_database_name --collection your_collection_name --out /path/to/backup/directory
示例(备份mydatabase中的mycollection集合到/home/user/mongodb_backup):
mongodump --db mydatabase --collection mycollection --out /home/user/mongodb_backup
若MongoDB启用了身份验证,需通过--username、--password、--authenticationDatabase参数指定认证信息:
mongodump --host localhost --port 27017 --username your_username --password your_password --authenticationDatabase admin --out /path/to/backup/directory
示例(备份mydatabase到/home/user/mongodb_backup,认证数据库为admin):
mongodump --host localhost --port 27017 --username admin --password secret --authenticationDatabase admin --db mydatabase --out /home/user/mongodb_backup
为节省存储空间,可使用管道将备份输出压缩:
mongodump --out /path/to/backup/directory | gzip > /path/to/backup/directory.tar.gz
示例(压缩备份到/home/user/mongodb_backup.tar.gz):
mongodump --out /home/user/mongodb_backup | gzip > /home/user/mongodb_backup.tar.gz
通过crontab设置定时任务,实现每日自动备份(如凌晨2点):
crontab -e
/backups/mongodb,文件名包含日期):0 2 * * * mongodump --out /backups/mongodb/$(date +\%Y-\%m-\%d)
使用mongorestore工具恢复备份目录中的所有数据库:
mongorestore /path/to/backup/directory
示例(恢复/home/user/mongodb_backup中的所有数据库):
mongorestore /home/user/mongodb_backup
若只需恢复某个数据库,可通过--db参数指定数据库名(备份目录需为该数据库的子目录):
mongorestore --db your_database_name /path/to/backup/directory/your_database_name
示例(恢复/home/user/mongodb_backup/mydatabase中的mydatabase数据库):
mongorestore --db mydatabase /home/user/mongodb_backup/mydatabase
若只需恢复某个集合,可结合--db和--collection参数(备份文件为.bson格式):
mongorestore --db your_database_name --collection your_collection_name /path/to/backup/directory/your_database_name/your_collection_name.bson
示例(恢复/home/user/mongodb_backup/mydatabase/mycollection.bson中的mycollection集合到mydatabase数据库):
mongorestore --db mydatabase --collection mycollection /home/user/mongodb_backup/mydatabase/mycollection.bson
若MongoDB启用了身份验证,需通过--username、--password、--authenticationDatabase参数指定认证信息:
mongorestore --host localhost --port 27017 --username your_username --password your_password --authenticationDatabase admin /path/to/backup/directory
示例(恢复/home/user/mongodb_backup中的所有数据库,认证数据库为admin):
mongorestore --host localhost --port 27017 --username admin --password secret --authenticationDatabase admin /home/user/mongodb_backup
若需覆盖现有数据库(清空后再恢复),可添加--drop参数:
mongorestore --drop /path/to/backup/directory
示例(恢复并删除mydatabase中的现有数据):
mongorestore --drop --db mydatabase /home/user/mongodb_backup/mydatabase
mongorestore --dryRun命令模拟恢复过程,检查备份文件的完整性。chmod -R 700 /path/to/backup/directory),防止未授权访问。/var/log/mongodb/mongod.log)监控备份过程,设置失败告警(如邮件、短信通知)。