专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

MongoDB更改oplog的大小

(一)oplog介绍
oplog是MongoDB数据库的操作日志,记录了MongoDB数据库的所有写操作,类似MySQL数据库的binlog日志。在MongoDB副本集中,oplog从主节点被复制到次级节点,通过次级节点对日志进行重做,实现次级节点与主节点数据一致。oplog日志保存在local.oplog.rs集合中。

(二)修改oplog的大小

oplog大小修改根据数据库版本,有2种不同的方法:

  • 在MongoDB 3.4及更早的版本中,直接删除并重建local.oplog.rs集合来调整操作日志的大小;
  • 在MongoDB 3.6及后续的版本中,使用replSetResizeOplog命令来调整操作日志的大小;

从MongoDB 4.0开始,MongoDB禁止删除local.oplog.rs集合,所以只能用replSetResizeOplog来修改oplog的大小了。

这里演示在MongoDB 4.2版本上修改oplog的大小,先在次级节点上修改操作日志的大小,最后在主机点上修改。

具体操作步骤如下:
STEP1:连接到副本集成员

mongo --authenticationDatabase admin -u replica -p replica

STEP2:【可选】验证oplog的大小

rstest:PRIMARY> use local
switched to db local
rstest:PRIMARY> db.oplog.rs.stats().maxSize
NumberLong(1970031616)

STEP3:修改副本集节点oplog的大小,oplog必须大于990MB,这里改为1000MB

rstest:PRIMARY> db.adminCommand({replSetResizeOplog:1,size:1000})
 {
     "ok" : 1,
     "$clusterTime" : {
         "clusterTime" : Timestamp(1593527768, 1),
         "signature" : {
             "hash" : BinData(0,"7fw3+0veB35tVTFl83c57kvM0OI="),
             "keyId" : NumberLong("6841443127941660675")
         }
     },
     "operationTime" : Timestamp(1593527768, 1)
 }

STEP4:【可选】压缩oplog.rs以回收磁盘空间
减小oplog的大小不会回收已经分配的磁盘空间,必须压缩oplog.rs来回收磁盘空间。

use local
db.runCommand({"compact" : "oplog.rs"})

注意:当执行压缩时,副本集成员无法复制oplog条目,可能会导致主节点的操作日志被覆盖,刺激节点无法同步数据而产生重新完全同步,建议在无业务的时间段内执行压缩操作。

【完】

文章永久链接:https://tech.souyunku.com/35412

未经允许不得转载:搜云库技术团队 » MongoDB更改oplog的大小

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们