MST

星途 面试题库

面试题:MongoDB分片集群中Oplog的基本原理与作用

请阐述在MongoDB分片集群中,Oplog是什么,它在整个系统架构中起到怎样的作用,以及它是如何工作的?
50.3万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

1. Oplog 是什么

  • Oplog(操作日志,Operation Log)是 MongoDB 副本集(Replica Set)中主节点(Primary)记录所有写操作的一个特殊的固定集合(Capped Collection)。在分片集群架构中,每个分片本质上也是一个副本集,所以同样存在 Oplog。

2. 在系统架构中的作用

  • 数据复制:在副本集内,主节点将写操作记录到 Oplog 中,从节点(Secondary)通过同步 Oplog 中的内容来保持与主节点数据的一致性。在分片集群中,各个分片副本集内部通过这种方式保证数据一致性。这确保了在某个节点出现故障时,其他节点能够接替其工作,提高了系统的可用性。
  • 故障恢复:如果主节点发生故障,副本集进行选举产生新的主节点。新主节点会根据 Oplog 中的记录,让其他从节点追平数据,从而保证整个副本集的数据一致性。在分片集群层面,这保证了每个分片的正常运行,进而维持整个集群的稳定。

3. 如何工作

  • 写操作记录:当主节点接收到写操作(如插入、更新、删除等)时,会将这些操作以文档的形式记录到 Oplog 中。每个 Oplog 文档包含了操作的详细信息,如操作类型、操作的集合、修改的文档内容等。
  • 同步过程:从节点会定期轮询主节点的 Oplog,获取自上次同步后新增的操作记录。从节点按照 Oplog 中的记录顺序,在本地重复这些写操作,从而使自身的数据状态与主节点保持一致。这个同步过程是异步的,不会阻塞主节点的写操作,保证了系统的高并发性能。同时,由于 Oplog 是固定集合,当空间使用达到上限时,会自动覆盖旧的记录,以确保 Oplog 不会无限增长。