MongoDB 的数据备份主要分为逻辑备份、物理备份及托管云备份三种方式,具体选择取决于您的部署环境和数据量大小。
1. 逻辑备份:使用 mongodump 和 mongorestore
这是最常用的备份方式,适用于小型部署或特定数据库/集合的备份。
备份命令示例:
bash
# 备份全库并压缩
mongodump --uri="mongodb://username:password@host:port" --out=/path/to/backup --gzip
# 备份特定数据库
mongodump --db=testdb --out=/path/to/backup
请谨慎使用此类代码。
特点:生成 BSON 格式文件,占用空间比 JSON 小,但恢复时需要重建索引,速度较慢。
2025 建议:对于分片集群,建议配合 --oplog 参数以确保备份期间的数据一致性。
2. 物理备份:文件系统快照
适用于大数据量且对恢复时间(RTO)有较高要求的场景。
方法:使用操作系统的 LVM 快照或云平台的磁盘快照(如 AWS EBS, 阿里云云盘快照)。
注意事项:在执行快照前,建议先运行 db.fsyncLock() 锁定写入,快照完成后再通过 db.fsyncUnlock() 解锁,以确保数据的一致性。
3. 托管云备份(MongoDB Atlas)
如果您使用的是 MongoDB Atlas 托管服务:
自动快照:Atlas 默认提供全托管备份,支持每小时、每日、每周等频率的快照。
2025 新规:自 2025 年起,Atlas 的 Flex 集群已自动启用备份且无法禁用,系统会自动保留每日快照。
按需恢复:支持时间点恢复(Point-in-Time Recovery),可将数据恢复到过去 7 天内的任意秒。
4. 备份策略建议 (2025)
混合策略:建议采用“每日增量备份 + 每周全量备份”的模式。
存储优化:使用 --gzip 参数可减少约 50%-70% 的存储空间。
异地容灾:将备份文件同步至异地云存储(如 AWS S3 或 腾讯云 COS),防止单点故障。
恢复演练:建议每季度执行一次恢复演练,确保备份文件的有效性。
如需了解更多工具细节,可参考 MongoDB 官方数据库工具文档。