面试题答案
一键面试MongoDB副本集Oplog是什么
- 定义:Oplog(操作日志,Operation Log)是MongoDB副本集中主节点(Primary)上的一个特殊的、固定大小的集合(位于local数据库中),记录了主节点上所有影响数据集的写操作。
它在副本集数据同步过程中的作用
- 数据同步基础:当主节点上执行写操作时,这些操作会按顺序记录到Oplog中。从节点(Secondary)会定期轮询主节点的Oplog,获取新的写操作记录,并在本地应用这些操作,从而保持与主节点的数据同步。
- 故障恢复支持:如果主节点发生故障,某个从节点晋升为新的主节点。新主节点会根据Oplog中的记录,确保在故障期间未完成的操作被正确处理,保证数据的一致性和完整性。
如何查看Oplog的相关信息
- 使用mongo shell查看Oplog内容:
// 连接到MongoDB实例 mongo // 切换到local数据库 use local // 查看oplog.rs集合的内容(Oplog存储在oplog.rs集合中) db.getCollection('oplog.rs').find()
- 查看Oplog状态信息:
在// 获取主节点状态,其中包含Oplog相关信息 rs.status()
rs.status()
的输出中,members
数组里每个成员的信息中,optime
字段表示该节点应用到的Oplog的时间点和操作编号,这有助于了解各个节点的数据同步进度。另外,logSizeMB
字段表示Oplog集合当前占用的空间大小(以MB为单位) 。 - 查看Oplog配置信息:
上述命令返回的结果中,// 查看Oplog配置参数 db.adminCommand({getParameter: 1, oplogSizeMB: 1})
oplogSizeMB
字段表示Oplog集合的大小配置(单位为MB),该值决定了Oplog能够记录写操作的时长和数量,默认情况下,MongoDB会根据系统的可用磁盘空间自动计算一个合适的Oplog大小。