MongoDB 在 Linux 上的备份与恢复实践
一 备份方式选型
二 逻辑备份与定时任务
mongodump \
--host 127.0.0.1 --port 27017 \
-u root -p 'YourStrongPass!' \
--authenticationDatabase admin \
--gzip \
--out /data/backup/mongo/$(date +%F_%H-%M-%S)
# 单库
mongodump -h 127.0.0.1 -u root -p 'YourStrongPass!' --authenticationDatabase admin -d mydb --gzip -o /data/backup/mongo/mydb_$(date +%F)
# 单集合
mongodump -h 127.0.0.1 -u root -p 'YourStrongPass!' --authenticationDatabase admin \
-d mydb -c mycoll --gzip -o /data/backup/mongo/mydb_mycoll_$(date +%F)
# 每天 02:00 全库备份
0 2 * * * /usr/bin/mongodump --host 127.0.0.1 --port 27017 -u root -p 'YourStrongPass!' \
--authenticationDatabase admin --gzip \
--out /data/backup/mongo/$(date +\%F_\%H-\%M-\%S) >> /var/log/mongo_backup.log 2>&1
提示:crontab 中 % 需转义为 \%;备份目录需提前创建并保障磁盘空间与权限。三 时间点恢复与副本集实践
mongodump --host rs0/10.0.0.11:27017,10.0.0.12:27017 \
-u backup -p 'BackupPass!' --authenticationDatabase admin \
--oplog --gzip \
-o /data/backup/mongo/point_in_time_$(date +%F_%H-%M-%S)
mongorestore --host 127.0.0.1:27017 -u root -p 'YourStrongPass!' \
--authenticationDatabase admin \
--oplogReplay \
/data/backup/mongo/point_in_time_2025-08-15_02-00-00
说明:时间点恢复仅对全库备份有效;如只需单库/单集合,请采用常规逻辑恢复并在应用侧控制窗口期数据一致性。四 物理备份与文件系统快照
sudo systemctl stop mongod
sudo rsync -a /var/lib/mongodb/ /data/backup/mongo/physical_$(date +%F)/
sudo systemctl start mongod
五 恢复操作与关键注意事项
# 全库恢复(追加导入)
mongorestore -h 127.0.0.1 -u root -p 'YourStrongPass!' \
--authenticationDatabase admin \
/data/backup/mongo/2025-08-15_02-00-00
# 全库恢复(先删后导)
mongorestore -h 127.0.0.1 -u root -p 'YourStrongPass!' \
--authenticationDatabase admin --drop \
/data/backup/mongo/2025-08-15_02-00-00
# 单库恢复
mongorestore -h 127.0.0.1 -u root -p 'YourStrongPass!' \
--authenticationDatabase admin -d mydb \
/data/backup/mongo/2025-08-15_02-00-00/mydb
# 单集合恢复
mongorestore -h 127.0.0.1 -u root -p 'YourStrongPass!' \
--authenticationDatabase admin -d mydb -c mycoll \
/data/backup/mongo/2025-08-15_02-00-00/mydb/mycoll.bson.gz --gzip