MongoDB在Linux上的备份与恢复实践
导读:MongoDB 在 Linux 上的备份与恢复实践 一 备份方式选型 逻辑备份:使用 mongodump 导出为 BSON,适合跨版本迁移、选择性恢复、中小规模数据;对运行性能有影响,建议在业务低峰期执行。默认不备份 local 库,且备...
MongoDB 在 Linux 上的备份与恢复实践
一 备份方式选型
- 逻辑备份:使用 mongodump 导出为 BSON,适合跨版本迁移、选择性恢复、中小规模数据;对运行性能有影响,建议在业务低峰期执行。默认不备份 local 库,且备份的是文档数据,索引元数据会一并导出,但恢复后可能需要重建部分索引或优化。
- 物理备份:直接拷贝数据目录(如 /var/lib/mongodb),适合大数据量、要求快速恢复的场景;通常需停库或使用文件系统快照以保证一致性。
- 实时/近实时:通过 副本集 实现高可用,必要时从 Secondary 节点导出,降低对主库影响。
- 时间点恢复:在 副本集 环境使用 –oplog 获取备份窗口内的操作,实现近实时恢复。
二 逻辑备份与定时任务
- 全库备份(示例含认证与压缩)
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) - 定时任务(crontab)
提示:crontab 中# 每天 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%需转义为\%;备份目录需提前创建并保障磁盘空间与权限。
三 时间点恢复与副本集实践
- 前提:MongoDB 为 副本集,备份在 Secondary 节点执行以减少对业务影响。
- 备份命令(含 oplog)
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) - 恢复命令(重放 oplog 到指定时间点)
说明:时间点恢复仅对全库备份有效;如只需单库/单集合,请采用常规逻辑恢复并在应用侧控制窗口期数据一致性。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 - 文件系统快照(LVM、云盘快照等):在快照前确保写一致性(如短暂冻结、从 Secondary 节点操作),快照完成后按快照恢复数据目录并启动服务。
- 适用场景:大数据量、RTO 要求更低的场景;恢复时直接还原数据文件并启动实例。
五 恢复操作与关键注意事项
- 常用恢复命令
# 全库恢复(追加导入) 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 - 重要注意事项
- 使用 –drop 会先删除目标库/集合数据,务必确认目标环境;时间点恢复使用 –oplogReplay,且仅对全库备份有效。
- 逻辑备份对性能有影响,建议在低峰期执行;mongodump 默认不备份 local 库。
- 备份完成后务必进行“可恢复性验证”:检查备份目录结构、集合与索引、抽样记录数,并进行小规模演练恢复。
- 安全性:备份文件包含敏感数据,建议加密存储并限制访问权限;传输到异地/云端时启用加密通道。
- 监控与保留:对备份任务做日志与告警,按业务 RPO/RTO 设定保留周期与多副本策略(本地/NAS/云)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在Linux上的备份与恢复实践
本文地址: https://pptw.com/jishu/782184.html
