MST

星途 面试题库

面试题:MongoDB副本集Oplog的基本原理与应用

请阐述MongoDB副本集Oplog是什么,它在副本集数据同步过程中起到什么作用,以及如何查看Oplog的相关信息?
28.3万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

MongoDB副本集Oplog是什么

  1. 定义:Oplog(操作日志,Operation Log)是MongoDB副本集中主节点(Primary)上的一个特殊的、固定大小的集合(位于local数据库中),记录了主节点上所有影响数据集的写操作。

它在副本集数据同步过程中的作用

  1. 数据同步基础:当主节点上执行写操作时,这些操作会按顺序记录到Oplog中。从节点(Secondary)会定期轮询主节点的Oplog,获取新的写操作记录,并在本地应用这些操作,从而保持与主节点的数据同步。
  2. 故障恢复支持:如果主节点发生故障,某个从节点晋升为新的主节点。新主节点会根据Oplog中的记录,确保在故障期间未完成的操作被正确处理,保证数据的一致性和完整性。

如何查看Oplog的相关信息

  1. 使用mongo shell查看Oplog内容
    // 连接到MongoDB实例
    mongo
    // 切换到local数据库
    use local
    // 查看oplog.rs集合的内容(Oplog存储在oplog.rs集合中)
    db.getCollection('oplog.rs').find()
    
  2. 查看Oplog状态信息
    // 获取主节点状态,其中包含Oplog相关信息
    rs.status()
    
    rs.status()的输出中,members数组里每个成员的信息中,optime字段表示该节点应用到的Oplog的时间点和操作编号,这有助于了解各个节点的数据同步进度。另外,logSizeMB字段表示Oplog集合当前占用的空间大小(以MB为单位) 。
  3. 查看Oplog配置信息
    // 查看Oplog配置参数
    db.adminCommand({getParameter: 1, oplogSizeMB: 1})
    
    上述命令返回的结果中,oplogSizeMB字段表示Oplog集合的大小配置(单位为MB),该值决定了Oplog能够记录写操作的时长和数量,默认情况下,MongoDB会根据系统的可用磁盘空间自动计算一个合适的Oplog大小。