Mongo oplog理解

news/2024/10/19 10:09:34

转载请注明出处:

  oplog(操作日志)是MongoDB中用于记录所有写操作的日志。它是一个特殊的集合,存储在副本集的主节点中。oplog用于确保副本集中的副节点与主节点的数据保持一致。当主节点执行写操作时,相应的操作将被记录到oplog中,副节点则通过读取oplog来获取最新的数据变化。

数据结构

  oplog在mongo数据库主节点的local数据下,进入local数据库可以查看这个集合中存储数据的结构:

  进入oplog数据库:

use local

  查看数据结构:

rs0:PRIMARY> db.oplog.rs.findOne()
{"ts" : Timestamp(1729001735, 165),"t" : NumberLong(187),"h" : NumberLong(0),"v" : 2,"op" : "i","ns" : "topology.filteredReason","ui" : UUID("94a529f7-dbf1-4be0-b296-361094515e13"),"wall" : ISODate("2024-10-15T14:15:35.636Z"),"lsid" : {"id" : UUID("bbf4c6e6-e139-48e2-82df-a0b15bd0a89f"),"uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=")},"txnNumber" : NumberLong(29170),"stmtId" : 0,"prevOpTime" : {"ts" : Timestamp(0, 0),"t" : NumberLong(-1)},"o" : {"_id" : "75a4d50f-8f37-4d06-8abe-d1c2b0de97a0","reason" : "link[maipu_3:gigabitethernet3>maipu_2:gigabitethernet3] has no label","type" : "LINK","key" : "maipu_3:gigabitethernet3>maipu_2:gigabitethernet3","tePolicyColorTupleId" : "maipu_3_maipu_1_MaiPu31_3628","_class" : "com.tethrnet.terra.service.sr.topology.lib.model.terra.te.svc.filteredreasontop.FilteredReason"}
}
rs0:PRIMARY>

  oplog是一个无限增长的集合,包含以下主要字段:

  • ts:时间戳,表示操作的时间。
  • h:哈希值,用于唯一标识该操作。
  • op:操作类型,可能的值包括“i”(插入)、“u”(更新)、“d”(删除)。
  • ns:命名空间,表示操作所属的数据库和集合。
  • o:操作的详细内容,具体取决于操作类型。

特性

  1. oplog(操作日志)是一个特殊的固定大小集合,记录所有修改数据库数据的操作。
  1. 它可以超越其配置大小限制,以避免删除大多数提交点。
  1. 每个副本集成员都包含oplog的副本,位于local.oplog.rs集合中。
  1. 操作日志中的每个操作都是幂等的,即应用一次或多次都会产生相同的结果。
  1. oplog用于复制和恢复节点,如果节点下线,需要oplog来恢复状态。

配置

  1. 默认情况下,MongoDB会自动创建oplog,但可以自定义其大小。
  1. 可以通过oplogSizeMB选项指定初始oplog大小。
  1. 使用replSetResizeOplog命令动态更改oplog大小,无需重启mongod。
  1. 可以设置最小保留时间,防止删除最近的操作日志条目。

oplog的作用

  • 数据同步:副节点通过读取oplog来同步主节点的写入操作,确保数据一致性。
  • 故障恢复:在主节点发生故障时,可以根据oplog中的信息快速恢复数据。
  • 查询历史:oplog提供了一个操作历史的记录,有助于审计和问题排查。

命令

  oplog存储在local数据库中。进入MongoDB shell后,您需要切换到local数据库:

  1. 查看当前最大oplog大小:
    db.getSiblingDB("local").oplog.rs.stats(1024*1024).maxSize
  2. 更改最大oplog大小:
    db.adminCommand({replSetResizeOplog: 1,size: Double(16384) // megabytes
    })
  3. 过滤oplog日志

    只对特定操作或特定时间范围内的日志,可以使用查询条件过滤结果。例如,查看类型为“插入”的操作:

    db.oplog.rs.find({ op: "i" }).pretty()
  4. 设置最小保留时间:
    db.adminCommand({replSetResizeOplog: 1,minRetentionHours: 24 // 保留至少24小时的日志条目
    })

其他重要信息

  1. oplog大小取决于存储引擎和可用空间。内存存储引擎使用5%物理内存,WiredTiger使用5%可用空间。
  1. 默认情况下,不设置最小保留时间,系统会自动截断以维持配置的最大oplog大小。
  1. 在副本集中运行时,不能手动对oplog执行写操作。
  1. oplog对于复制和恢复节点至关重要,不能删除local.oplog.rs集合。
  1. 在sharded集群中,每个副本组都有自己的oplog。

  通过理解和正确配置oplog,您可以优化MongoDB的复制性能,并确保数据的一致性和可用性。适当的oplog大小对于高效的复制和恢复至关重要。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73353.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统命令3

1、df 查看磁盘使用情况Filesystem:代表该文件系统时哪个分区,所以列出的是设备名称。 1K-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变单位大小,也可以用-B来设置。 Used:已经使用的空间大小。Available:剩余的空间大小。 Use%:磁盘使用率。如果使用率在90%以上…

线性表学习1

线性结构 若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且除了首尾节点外所有结点都最多只有一个直接前趋和一个直接后继。 可表示为:(a1,a2,a3,...) 特点:只有一个首结点和尾结点 本质特征:除首尾结点外,其他结点只有一个直接前驱和一个直 接后继。 简言…

学习 gradle 基础

简介 Gradle 的优势一款最新的,功能最强大的构建工具,用它逼格更高 使用 Groovy 或者 Kotlin 代替 XML,使用程序代替传统的 XML 配置,项目构建更灵活 丰富的第三方插件,让你随心所欲使用 完善 Android,Java 开发技术体系下载和安装 官网地址 https://services.gradle.org…

AutoResetEvent双向信号(生产者和消费者)例子

AutoResetEvent是一个非常有用的线程同步机制,尤其是在处理生产者和消费者问题的时候,尤其适用。本随笔记录下生产者和消费者一对一问题的两种写法并进行代码执行逻辑的分析,来加深对AutoResetEvent的理解。 写法一:internal class Program {public static AutoResetEvent …

数据采集和融合技术作业1

作业① 1)用requests和BeautifulSoup库方法定向爬取给定网址的数据,屏幕打印爬取的大学排名信息。 a、主要代码解析 该函数从获取的JSON数据中提取前 num 名大学的信息,并将这些信息存储到 ulist 列表中,同时格式化输出这些大学的排名信息 def printUnivList(ulist, html, …

沃顿商学院商业人工智能笔记-六-

沃顿商学院商业人工智能笔记(六) P46:12_简介.zh_en - GPT中英字幕课程资源 - BV1Ju4y157dK 嗨,我是迈克尔罗伯茨。我是威廉H罗伯茨教授。 我是宾夕法尼亚大学沃顿商学院的金融学劳伦斯教授。 在这一系列视频中,我们将讨论金融、机器学习。以及人工智能。因此,当我想到金…

沃顿商学院商业人工智能笔记-九-

沃顿商学院商业人工智能笔记(九) P82:19_更广泛的隐私和伦理问题.zh_en - GPT中英字幕课程资源 - BV1Ju4y157dK 所以让我们讨论一下关于使用数据科学和人工智能的一些更广泛的问题。一般来说,在工作场所管理人际关系。这些是伦理问题,也是隐私问题。 所以让我们谈谈这些问…

沃顿商学院商业人工智能笔记-三-

沃顿商学院商业人工智能笔记(三) P123:22_AI的风险.zh_en - GPT中英字幕课程资源 - BV1Ju4y157dK 在这次讲座中,我们将讨论AI的一些风险。我将以一个简单的统计风险开始,它有重要的管理意义。 然后我会谈论社会和伦理风险。 所以我想讨论的第一个风险是过拟合风险。 现在,…