广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB 更改 Oplog Size 大小
  • 571
分享到

MongoDB 更改 Oplog Size 大小

2024-04-02 19:04:59 571人浏览 八月长安
摘要

mongoDB 的副本集同步中 Oplog 占了非常关键的作用。Oplog Size 可不可以随意更改?https://docs.monGodb.com/manual/reference/configura

mongoDB 的副本集同步中 Oplog 占了非常关键的作用。


Oplog Size 可不可以随意更改?

https://docs.monGodb.com/manual/reference/configuration-options/#replication.oplogSizeMB
官方配置文档说明

replication.oplogSizeMB
	Type: integer

	The maximum size in megabytes for the replication operation log (i.e., the oplog).
	Starting in MongoDB 4.0, the oplog can grow past its configured size limit to avoid deleting the majority commit point.
	By default, the mongod process creates an oplog based on the maximum amount of space available. For 64-bit systems, the oplog is typically 5% of available disk space.
	Once the mongod has created the oplog for the first time, changing the replication.oplogSizeMB option will not affect the size of the oplog.
	To change the oplog size of a running replica set member, use the replSetResizeOplog administrative command. replSetResizeOplog enables you to resize the oplog dynamically without restarting the mongod process.
	
	See Oplog Size for more infORMation.
	The replication.oplogSizeMB setting is available only for mongod.

其中,默认oplog 大小如无配置指定,则默认为当前磁盘空间的 5% 在 64位操作系统上。

一次生成 oplog 空间则终生有效,后续通过更改 mongod.conf 配置文件并重启服务,均不生效。

在 MongoDB 3.6+ 版本中新增可以动态调整副本集 Oplog Size 的指令,无需重启 mongod 服务。


查看当前 mongod 服务中分配的 Oplog Size 大小

查看当前已经分配的 oplog size 大小有几个类似的指令

sh2:PRIMARY> rs.printReplicationInfo()
configured oplog size:   12958.975341796875MB
log length start to end: 938secs (0.26hrs)
oplog first event time:  Thu Apr 11 2019 15:03:05 GMT+0800 (CST)
oplog last event time:   Thu Apr 11 2019 15:18:43 GMT+0800 (CST)
now:                     Thu Apr 11 2019 15:18:43 GMT+0800 (CST)


sh3:PRIMARY> rs.printReplicationInfo()
sh3:PRIMARY> db.printReplicationInfo()
sh3:PRIMARY> db.getReplicationInfo()
{
        "logSizeMB" : 102400,
        "usedMB" : 905.03,
        "timeDiff" : 4704,
        "timeDiffHours" : 1.31,
        "tFirst" : "Thu Apr 11 2019 13:54:30 GMT+0800 (CST)",
        "tLast" : "Thu Apr 11 2019 15:12:54 GMT+0800 (CST)",
        "now" : "Thu Apr 11 2019 15:12:54 GMT+0800 (CST)"
}

logSizeMB / configured oplog size: 当前已配置的空间大小,单位 MB。
usedMB: 当前已使用空间大小,单位 MB。
tFirst / oplog first event time: 当前 oplog 最开始的记录时间。
tLast / oplog last event time: 当前 oplog 最新的更改记录时间。
timeDiff / log length start to end: 当前mongod中当前更改记录时间 - 最开始记录时间,单位 秒。
timeDiffHours / log length start to end: 当前mongod中当前更改记录时间 - 最开始记录时间,单位 小时。


规划需要更改的 oplog size 大小

根据业务场景不同,在高峰期获取 mongod 实例的写入量

sh2:PRIMARY> rs.printReplicationInfo()
configured oplog size:   12958.975341796875MB
log length start to end: 938secs (0.26hrs)
oplog first event time:  Thu Apr 11 2019 15:03:05 GMT+0800 (CST)
oplog last event time:   Thu Apr 11 2019 15:18:43 GMT+0800 (CST)
now:                     Thu Apr 11 2019 15:18:43 GMT+0800 (CST)

如上面所示,项目大多都是 insert、update 等更新操作,所以 12G 的 oplog 空间,在业务高峰只能够存储最近 900 秒的变更操作日志

如果需要使 oplog 保留更长的周期,那么需要合理规划更大的 oplog.rs 空间大小。


更改 oplog size 大小
概述

oplog在内部作为上限集合存在,因此您无法在正常操作过程中修改其大小。
在大多数情况下,默认的oplog大小是可接受的大小;
但是,在某些情况下,您可能需要更大或更小的oplog。
例如,如果应用程序在短时间内执行大量多次更新或删除,则可能需要更改oplog大小。

为了修改oplog大小,我们需要以此为复制集中的每个节点进行维护手动操作。该过程需要:停止 mongod 进程,并以非单节点方式启动,修改oplog大小,再重启该节点。

[重要]
请确保我们从副本集的从节点(Secondary)开始维护,并最后维护主节点(Primary)。

流程
  • 以单节点模式重启节点

    在 Primary 节点上可以使用 rs.stepDown() 指令来强制手动切换为Secondary 节点。

  • 并保留就的 oplog 的条目作为查询条件,清空 oplog.rs 集合并重新建立指定大小的 oplog.rs 集合。

  • 以副本集模式启动 mongod 实例。


1. 首先在 secondary 节点上关闭 mongod 实例。比如通过 db.shutdownServer() 命令来关闭:

> db.shutdownServer()

在其他端口上以单节点模式(不包含 --replSet 参数)重新启动 mongod 实例。命令如下:

# sudo -u mongod mongod --port 37017 --dbpath /var/lib/mongo

2. 复制现有 Oplog (可选)
我们可以选择备份现有结点的 oplog 来以防万一,命令如下:

mongodump --port 37017 --db local --collection 'oplog.rs'

3. 以新的大小和 Seed Entry 重建 oplog
保存 oplog 中最新的条目。例如,连接进入 mongo shell,并通过如下命令进入 local 数据库

> use local

在 mongo Shell 窗口中,我们也可以使用如下命令来设置 db:

> db = db.getSiblingDB('local')

确保 local.temp 集合为空的:

> db.temp.drop()

使用 natural order 排序来找到 oplog 中最后一条数据,并通过 db.collection.save() 命令插入 local.temp 集合中:

> db.temp.save(db.oplog.rs.find({}, {ts: 1, h: 1}).sort({$natural: -1}).limit(1).next())

检验 local.temp 集合中保存的最后一条 oplog 数据:

> db.temp.find()

4. 删除已存在老的 Oplog 集合
通过如下命令在 local 库中删除老的oplog.rs 集合:

> db = db.getSiblingDB('local')
> db.oplog.rs.drop()

结果会返回 true

5. 建立新的 Oplog 集合大小
通过 create 命令来建立新的 oplog(新的大小)。指定 size(单位是 bytes)。下面的命令会建立一个大小为 20 * 1024 * 1024 * 1024 也就是 20G 的 oplog 集合:

> db.runCommand({create: "oplog.rs", capped: true, size: (20 * 1024 * 1024 * 1024)})

命令执行成功后会返回如下内容:

{ "ok" : 1 }

6. 将之前保存在 local.temp 集合中的老的最后一条 oplog 数据插入到新的 oplog 集合中。 例如:

> db.oplog.rs.save( db.temp.findOne() )

通过如下命令来确认:

> db.oplog.rs.find()

7. 结束,以副本集模式重启 mongod 实例。

> db = db.getSiblingDB('admin')
> db.shutdownServer()
# service mongod restart

该复制集将会恢复并会在其成为主节点之前 “catch up” 数据。

8. 重复以上操作在所有我们希望修改 oplog 大小的机器上。最后再在主节点上进行该操作。


您可能感兴趣的文档:

--结束END--

本文标题: MongoDB 更改 Oplog Size 大小

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

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

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

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

下载Word文档
猜你喜欢
  • MongoDB 更改 Oplog Size 大小
    MongoDB 的副本集同步中 Oplog 占了非常关键的作用。Oplog Size 可不可以随意更改?https://docs.mongodb.com/manual/reference/configura...
    99+
    2022-10-18
  • MongoDB更改oplog大小
    【问题说明】        在生产环境新增secondary:10.9.197.6:27017...
    99+
    2022-10-18
  • mongoDB复制集修改 oplog 大小
    ctiy:PRIMARY> use local switched to db local ctiy:PRIMARY> db.oplog.rs.stats().maxSize //查看大小 NumberLong("53687091200...
    99+
    2019-07-06
    mongoDB复制集修改 oplog 大小 数据库入门 数据库基础教程 数据库 mysql
  • MongoDB修改oplog大小的方法有哪些
    这篇文章主要介绍“MongoDB修改oplog大小的方法有哪些”,在日常操作中,相信很多人在MongoDB修改oplog大小的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MongoDB修改oplo...
    99+
    2023-06-29
  • 分享MongoDB修改oplog大小的4种方法
    目录方法一方法二方法三1.关闭mongod2.修改配置文件3.启动mongod实例,并备份oplog4.重建oplog5.插入前面保存的oplog时间点记录6.关闭mongod实例方...
    99+
    2022-11-13
  • oracle 更改 sga+pga 大小
    前接天需要改一下Oracle的内存参数,本来oracle 装机时候已经配置好了sga 和pga的大小了,但是有好多问题随之出现。linux 用的是16G内存,sga ...
    99+
    2022-10-18
  • oracle 11g 更改日志组大小
        1、创建新的日志组  1.alter database add logfile group 4 (‘/u01/app/oracle/oradata/jian/redo0...
    99+
    2022-10-18
  • win7内存大小怎么更改
    这篇“win7内存大小怎么更改”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7内存大小怎么更改”文章吧。win7内存大...
    99+
    2023-07-01
  • win7分区大小如何更改
    这篇文章主要介绍“win7分区大小如何更改”,在日常操作中,相信很多人在win7分区大小如何更改问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7分区大小如何更改”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-01
  • python如何更改字体大小
    在Python中,可以使用tkinter模块来创建图形用户界面(GUI)应用程序,并且可以使用该模块提供的方法来更改字体大小。下面是...
    99+
    2023-08-12
    python
  • win7图标大小如何更改
    本篇内容介绍了“win7图标大小如何更改”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win7图标大小更改教程方法一:点击屏幕空白处,选择“...
    99+
    2023-07-01
  • win10中如何更改字体大小
    在win10中更改字体大小的方法:1.打开控制板面;2.进入“外观和个性化”选项;3.点击“显示”选项;4.在仅更改文本大小选项中更改字体大小;具体步骤如下:首先,win10系统桌面中打开控制板面;进入到控制板面后,在板面中选择进入“外观和...
    99+
    2022-10-13
  • Linux中怎么更改光标大小
    今天小编给大家分享一下Linux中怎么更改光标大小的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在上更改光标大小通过GUIU...
    99+
    2023-06-28
  • MySQL查询将小写更改为大写?
    您可以使用 MySQL 的内置函数 UPPER() 将小写字母更改为大写字母。语法如下,带有 select 语句。SELECT UPPER(‘yourStringValue’);以下是显示小写字符串的示例 ...
    99+
    2023-10-22
  • 如何更改win7中字体大的小
    有的时候我们看不惯win7系统自带的默认字体,就想着能不能去将系统自带的默认字体给修改掉。而关于win7更改字体的方法是比较简单。今天学无忧就来对大家讲解win7怎么更改字体大小的具体操作方法。不管我们是更改win7的默...
    99+
    2023-06-01
    win7 字体
  • 如何在css里更改字体大小
    这篇文章给大家分享的是有关如何在css里更改字体大小的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在css里更改字体大小可以使用font-size属性,如【font-size:smaller;】,表示把字体设置为...
    99+
    2023-06-06
  • win7内存大小显示怎么更改
    本篇内容介绍了“win7内存大小显示怎么更改”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win7内存大小显示更改教程首先我们需要下载一个e...
    99+
    2023-07-01
  • win7字体大小怎么更改教程
    本篇内容主要讲解“win7字体大小怎么更改教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win7字体大小怎么更改教程”吧!win7字体大小更改教程首先右键桌面空白处,选择“个性化”点击左下角...
    99+
    2023-07-01
  • win7桌面图标大小怎么更改
    这篇“win7桌面图标大小怎么更改”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7桌面图标大小怎么更改”文章吧。win...
    99+
    2023-07-01
  • Win10桌面图标大小如何更改
    今天小编给大家分享一下Win10桌面图标大小如何更改的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。更改Win10桌面图标大小...
    99+
    2023-07-01
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作