面试题答案
一键面试备份方案选择
选择使用 MongoDB 的 oplog 重放结合定期全量备份的方案。
理由
- 保证数据完整性:
- 定期全量备份:通过定期(例如每周或每月)进行全量备份,可以获取数据库在某一时刻的完整状态,这确保了在发生灾难性数据丢失时,能够恢复到全量备份时的状态,保证了数据的完整性基础。
- oplog 重放: oplog(操作日志)记录了 MongoDB 数据库的所有写操作。在全量备份的基础上,利用 oplog 重放可以将备份时间点之后的所有写操作重新应用,从而恢复到故障发生前的最新状态,进一步保证数据完整性。
- 减少对线上业务性能影响:
- oplog 重放:oplog 是 MongoDB 内部机制,它的记录和使用对线上业务的额外开销相对较小。在备份时,主要是记录 oplog 日志,而重放是在恢复阶段进行,不影响线上业务运行。
- 定期全量备份:可以选择在业务低峰期进行全量备份,如凌晨等时段,这样对线上业务性能的影响可以降到最低。同时,MongoDB 支持在副本集的从节点进行备份,从节点分担了主节点的读负载,从节点进行备份也能减少对主节点(线上业务主要操作节点)性能的影响。