mongodump进行全量逻辑备份mongodump是MongoDB官方提供的逻辑备份工具,可将数据库导出为BSON格式文件(保留数据结构与索引)。基本命令如下:
sudo mongodump --out /backup/mongodb/$(date +%Y%m%d%H%M%S)
--db(数据库名)或--collection(集合名)参数,例如:sudo mongodump --db your_database --out /backup/mongodb/$(date +%Y%m%d%H%M%S)
--username、--password及--authenticationDatabase参数:sudo mongodump --username admin --password your_pass --authenticationDatabase admin --out /backup/mongodb/$(date +%Y%m%d%H%M%S)
cron定时任务实现定期备份(如每天凌晨2点),编辑crontab(sudo crontab -e)并添加:0 2 * * * /usr/bin/mongodump --out /backup/mongodb/$(date +\%Y\%m\%d\%H\%M\%S)
注:
%需转义为\%,避免cron解析错误。
备份完成后,可使用tar命令压缩备份目录,例如:
sudo tar -czvf /backup/mongodb/backup-$(date +%Y%m%d%H%M%S).tar.gz /backup/mongodb/$(date +%Y%m%d%H%M%S)
find命令删除超过7天的备份(避免存储溢出):find /backup/mongodb -type d -name 'backup-*' -mtime +7 -exec rm -rf {} \;
可将此命令添加到备份脚本中,实现自动清理。若需实现时间点恢复(如恢复到某一具体操作时间),需利用MongoDB副本集的oplog(操作日志)。步骤如下:
mongodump备份整个数据库,并添加--oplog参数记录备份期间的操作:sudo mongodump --oplog --out /backup/mongodb/full-$(date +%Y%m%d)
oplog(如每小时),仅记录自上次备份以来的操作:sudo mongodump --oplog --out /backup/mongodb/incremental-$(date +%Y%m%d%H)
恢复时,先还原全量备份,再使用--oplogReplay参数重放oplog中的操作,实现指定时间点的恢复:
sudo mongorestore --oplogReplay /backup/mongodb/full-20251107/
注:
oplog仅适用于副本集部署,单机版MongoDB无法使用此功能。
mongorestore)mongorestore是mongodump的配套恢复工具,用于将BSON文件还原到MongoDB实例。基本命令如下:
sudo mongorestore /backup/mongodb/$(date +%Y%m%d%H%M%S)/your_database
sudo mongorestore /backup/mongodb/$(date +%Y%m%d%H%M%S)/your_database/your_collection.bson
sudo systemctl stop mongod
sudo systemctl start mongod
mongo --host 127.0.0.1 --port 27017
或使用mongodump导出恢复后的数据,与原备份对比。若使用物理备份工具(如xtrabackup),恢复步骤如下:
sudo systemctl stop mongod
/usr/local/xtrabackup/bin/xtrabackup --decompress --remove-original --target-dir=/var/lib/mongodb
/usr/local/xtrabackup/bin/innobackupex --apply-log /var/lib/mongodb
sudo systemctl start mongod
注:物理备份适用于大规模数据或对恢复时间要求极高的场景,但配置较复杂。
gpg等工具加密包含敏感数据的备份文件,避免泄露。