iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB中 oplog的作用是什么
  • 626
分享到

MongoDB中 oplog的作用是什么

2024-04-02 19:04:59 626人浏览 安东尼
摘要

本篇文章为大家展示了mongoDB中 oplog的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 1:oplog简介 oplog是local库下的一个

本篇文章为大家展示了mongoDB中 oplog的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1:oplog简介

oplog是local库下的一个固定集合,Secondary就是通过查看Primary 的oplog这个集合来进行复制的。每个节点都有oplog,记录这从主节点复制过来的信息,这样每个成员都可以作为同步源给其他节点。

 Oplog 可以说是MonGodb Replication的纽带了。

2:副本集数据同步的过程

副本集中数据同步的详细过程:Primary节点写入数据,Secondary通过读取Primary的oplog得到复制信息,开始复制数据并且将复制信息写入到自己的oplog。如果某个操作失败(只有当同步源的数据损坏或者数据与主节点不一致时才可能发生),则备份节点停止从当前数据源复制数据。如果某个备份节点由于某些原因挂掉了,当重新启动后,就会自动从oplog的最后一个操作开始同步,同步完成后,将信息写入自己的oplog,由于复制操作是先复制数据,复制完成后再写入oplog,有可能相同的操作会同步两份,不过MongoDB在设计之初就考虑到这个问题,将oplog的同一个操作执行多次,与执行一次的效果是一样的。

  • 作用:

  当Primary进行写操作的时候,会将这些写操作记录写入Primary的Oplog 中,而后Secondary会将Oplog 复制到本机并应用这些操作,从而实现Replication的功能。
  同时由于其记录了Primary上的写操作,故还能将其用作数据恢复。
  可以简单的将其视作Mysql中的binlog。

3:oplog的增长速度

oplog是固定大小,他只能保存特定数量的操作日志,通常oplog使用空间的增长速度跟系统处理写请求的速度相当,如果主节点上每分钟处理1KB的写入数据,那么oplog每分钟大约也写入1KB数据。如果单次操作影响到了多个文档(比如删除了多个文档或者更新了多个文档)则oplog可能就会有多条操作日志。db.testcoll.remove() 删除了1000000个文档,那么oplog中就会有1000000条操作日志。如果存在大批量的操作,oplog有可能很快就会被写满了。

  • 大小:

  Oplog 是一个capped collection。
  在64位的linux, Solaris, FreeBSD, and windows 系统中,Mongodb默认将其大小设置为可用disk空间的5%(默认最小为1G,最大为50G)或也可以在mongodb复制集实例初始化之前将mongo.conf中oplogSize设置为我们需要的值

  local.oplog.rs 一个capped collection集合.可在命令行下使用--oplogSize 选项设置该集合大小尺寸.
  但是由于Oplog 其保证了复制的正常进行,以及数据的安全性和容灾能力。

4:oplog注意事项:

local.oplog.rs特殊的集合。用来记录Primary节点的操作

oplog的大小

capped collection是MongoDB中一种提供高性能插入、读取和删除操作的固定大小集合,当集合被填满的时候,新的插入的文档会覆盖老的文档。

所以,oplog表使用capped collection是合理的,因为不可能无限制的增长oplog。MongoDB在初始化副本集的时候都会有一个默认的oplog大小:

  • 在64位的Linux,Solaris,FreeBSD以及Windows系统上,MongoDB会分配磁盘剩余空间的5%作为oplog的大小,如果这部分小于1GB则分配1GB的空间

  • 在64的OS X系统上会分配183MB

  • 在32位的系统上则只分配48MB

oplog的大小设置是值得考虑的一个问题,如果oplog size过大,会浪费存储空间;如果oplog size过小,老的oplog记录很快就会被覆盖,那么宕机的节点就很容易出现无法同步数据的现象。

比如,基于上面的例子,我们停掉一个备份节点(port=33333),然后通过主节点插入以下记录,然后查看oplog,发现以前的oplog已经被覆盖了。

通过MongoDB shell连接上这个节点,会发现这个节点一直处于RECOVERING状态

解决方法:

数据同步

在副本集中,有两种数据同步方式:

  • initial sync(初始化):这个过程发生在当副本集中创建一个新的数据库或其中某个节点刚从宕机中恢复,或者向副本集中添加新的成员的时候,默认的,副本集中的节点会从离它最近的节点复制oplog来同步数据,这个最近的节点可以是primary也可以是拥有最新oplog副本的secondary节点。

    • 该操作一般会重新初始化备份节点,开销较大

  • replication(复制):在初始化后这个操作会一直持续的进行着,以保持各个secondary节点之间的数据同步。

initial sync

当遇到上面例子中无法同步的问题时,只能使用以下两种方式进行initial sync了

  • 第一种方式就是停止该节点,然后删除目录中的文件,重新启动该节点。这样,这个节点就会执行initial sync

    • 注意:通过这种方式,sync的时间是根据数据量大小的,如果数据量过大,sync时间就会很长

    • 同时会有很多网络传输,可能会影响其他节点的工作

  • 第二种方式,停止该节点,然后删除目录中的文件,找一个比较新的节点,然后把该节点目录中的文件拷贝到要sync的节点目录中

通过上面两种方式中的一种,都可以重新恢复"port=33333"的节点。改变一直处于RECOVERING状态的错误。

查看oplog的信息

通过"db.printReplicationInfo()"命令可以查看oplog的信息

字段说明:

  • configured oplog size: oplog文件大小

  • log length start to end: oplog日志的启用时间段

  • oplog first event time: 第一个事务日志的产生时间

  • oplog last event time: 最后一个事务日志的产生时间

  • now: 现在的时间

<h4 id="_nav_7" background-position:left top;background-size:initial;background-repeat:no-repeat;background-attachment:initial;background-origin:initial;background-clip:initial;height:auto;line-height:1.8;padding-left:20px;color:#666666;margin:10px 0px;font-family:verdana, Arial, Helvetica, sans-serif;white-space:nORMal;"> 查看slave状态

通过"db.printSlaveReplicationInfo()"可以查看slave的同步状态

副本节点中执行db.printSlaveReplicationInfo()命令可以查看同步状态信息

  • source——从库的IP及端口

  • syncedTo——当前的同步情况,延迟了多久等信息

上述内容就是MongoDB中 oplog的作用是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB中 oplog的作用是什么

本文链接: https://www.lsjlt.com/news/56511.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB中 oplog的作用是什么
    本篇文章为大家展示了MongoDB中 oplog的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 1:oplog简介 oplog是local库下的一个...
    99+
    2024-04-02
  • mongodb中oplog的格式和作用是什么
    这篇文章主要讲解了“mongodb中oplog的格式和作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mongodb中oplog的格式和作用是什么”吧!目录 基本概念 Oplog 的...
    99+
    2023-06-20
  • Mongodb中oplog的原理是什么
    Mongodb中oplog的原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Oplog 是 MongoDB 实现复制集的关键数据结...
    99+
    2024-04-02
  • MongoDB中怎么开启Oplog
    这篇文章给大家介绍MongoDB中怎么开启Oplog,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。配置过程其实配置的过程比较简单。step 1 : 在配置文件中 添加副本集参数(rep...
    99+
    2024-04-02
  • mongodb中unwind的作用是什么
    在 MongoDB 中,$unwind 是一个聚合操作符,用于将包含数组的字段拆分为多个文档。这对于处理包含数组的文档非常有用,特别...
    99+
    2024-03-11
    mongodb
  • MongoDB中ChangeStream的作用是什么
    ChangeStream是MongoDB的一种特性,用于实时监控数据库中的数据更改操作。通过ChangeStream,用户可以订阅数...
    99+
    2024-04-19
    MongoDB
  • mongodb 中怎么利用oplog恢复时间点
    mongodb 中怎么利用oplog恢复时间点,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.首先创建hezi集合,并插入1...
    99+
    2024-04-02
  • MongoDB Oplog中的字段介绍
    {     "ts" : Timestamp(1446011584, 2),         "h" : NumberLong("16873591...
    99+
    2024-04-02
  • MongoDB中怎么利用oplog恢复数据
    今天小编给大家分享一下MongoDB中怎么利用oplog恢复数据的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。当我们对数据出...
    99+
    2023-06-29
  • MongoDB中remove()方法的作用是什么
    MongoDB中remove()方法的作用是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、remove()方法的基本语法格式db.collection....
    99+
    2023-06-14
  • MongoDB利用oplog恢复数据的方法
    目录数据全备模拟故障写入数据模拟误操作恢复步骤备份oplog解析oplog将oplog备份和全备复制到standalone机查找误操作时间点进行数据恢复检查恢复结果当我们对数据出现误...
    99+
    2024-04-02
  • MongoDB中$bucket聚合阶段的作用是什么
    $bucket聚合阶段是MongoDB中的一种聚合操作,用于根据指定的条件将文档分组成不同的“桶”或“桶”的范围。它可以用来对文档进...
    99+
    2024-04-19
    MongoDB
  • mongodb分片事务的作用是什么
    MongoDB分片事务的作用是在分片集群上执行跨多个分片的原子操作。在分片集群中,数据根据某个字段进行分片,存储在多个分片上。分片事...
    99+
    2023-09-01
    mongodb
  • 对象存储mongodb的作用是什么
    对象存储(Object Storage)是一种用于存储和管理大规模非结构化数据的存储技术。与传统的关系型数据库不同,对象存储不使用表...
    99+
    2023-08-24
    mongodb
  • mongodb中unwind的用法是什么
    在MongoDB中,$unwind是一个用于展开数组字段的聚合操作符。它将包含数组的字段拆分成多个文档,每个文档只包含一个数组元素。...
    99+
    2024-04-09
    mongodb
  • python操作MongoDB的方法是什么
    这篇文章主要介绍“python操作MongoDB的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python操作MongoDB的方法是什么”文章能帮助大家解决问题。MongoDB ...
    99+
    2023-06-28
  • MongoDB管理用户的相关操作是什么
    这篇文章给大家介绍MongoDB管理用户的相关操作是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 列出所有用户mongouse admin ...
    99+
    2024-04-02
  • mongodb是干什么用的
    MongoDB是一种开源的、面向文档的NoSQL数据库管理系统,用于存储和管理大规模、高性能的非结构化数据。它可以用于处理各种类型的...
    99+
    2023-09-12
    mongodb
  • mongodb中的分片是什么
    在mongodb中分片是指在多台计算机之间存储数据记录的过程,它能够将数据水平切分到不同的物理节点,当应用数据越来越大的时候,数据量也会越来越大。它是一种mongodb方法,可以满足数据增长的需求。它在数据库或搜索引擎中创建数据的水平分区,...
    99+
    2024-04-02
  • mongodb嵌套文档的操作是什么
    在MongoDB中,嵌套文档的操作指的是对嵌套在文档中的子文档进行增删改查操作。以下是一些常见的嵌套文档操作:1. 插入嵌套文档:-...
    99+
    2023-09-06
    mongodb
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作