面试题答案
一键面试- 副本集(Replica Sets)
- 优点:
- 提供高可用性,当主节点出现故障时,副本集内的从节点可以自动提升为主节点,确保服务不间断。
- 有助于数据冗余,多个节点存储相同的数据,降低数据丢失风险。
- 可用于读扩展,客户端可以从副本节点读取数据,分担主节点的读负载。
- 缺点:
- 配置相对复杂,需要管理多个节点之间的同步和选举机制。
- 副本集内节点之间的数据同步会消耗网络带宽,特别是在数据量较大且网络环境不佳时可能影响性能。
- 优点:
- 分片(Sharding)
- 优点:
- 支持水平扩展,通过将数据分散存储在多个分片上,可以应对海量数据存储和高并发读写需求。
- 提高数据的可用性,当某个分片出现故障时,其他分片仍可正常工作,整体服务不会完全中断。
- 缺点:
- 部署和维护复杂度高,需要合理规划数据的分片键,以确保数据均匀分布和高效查询。
- 跨分片的事务处理相对复杂,在一些版本中对跨分片事务支持有限。
- 优点:
- mongodump 和 mongorestore
- 优点:
- 简单直接,使用命令行工具即可完成备份和恢复操作,不需要复杂的集群配置。
- 可以灵活选择备份的数据库、集合,甚至可以通过查询条件备份部分数据。
- 缺点:
- 备份和恢复操作期间会对数据库性能产生一定影响,特别是在数据量较大时。
- 备份操作是静态的,在备份过程中如果数据有更新,可能导致备份数据不完整,除非采用一些额外的锁机制。
- 优点:
- ** oplog 重放**
- 优点:
- 基于操作日志(oplog)进行数据恢复,可以实现增量恢复,仅恢复从备份时间点之后的操作,恢复速度相对较快。
- 可以在一定程度上模拟实时的数据变化,对于恢复到某个特定时间点的数据状态有帮助。
- 缺点:
- 依赖于 oplog 的保留策略和大小,如果 oplog 空间不足,可能丢失部分操作记录,影响恢复的完整性。
- 操作相对复杂,需要对 oplog 的结构和原理有深入了解,并且在重放过程中可能会遇到各种异常情况需要处理。
- 优点: