前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mongodb 3.2 修改oplogsize

mongodb 3.2 修改oplogsize

作者头像
保持热爱奔赴山海
发布2019-09-17 14:23:04
1.3K0
发布2019-09-17 14:23:04
举报
文章被收录于专栏:数据库相关

参考:https://blog.csdn.net/jianlong727/article/details/78933525

3.2修改oplogsize的文档:https://docs.mongodb.com/v3.2/tutorial/change-oplog-size/

mongodb 3.2 修改oplogsize的方法:

1、关闭这个从节点的mongodb进程

1.1 关进程

use admin

db.shutdownServer()

1.2 注销Replica set相关启动参数,并修改port端口号

vim mongod.conf ,注释掉下面几行,然后修改下监听端口

#replication:

#  oplogSizeMB: 4096

#  replSetName: set01

net:

port: 27111

然后,以单实例的方式启动这个从节点:

mongod -f mongod.conf

2、备份节点oplog日志

2.1 全备当前节点的oplog记录

mongodump --port 27111 --db local --collection 'oplog.rs' -o /root/oplog_all

2.2 备份oplog中最后一条记录

mongo  --port 27111

use local

db.optmp.drop()   ---清空临时表,存放oplog最近一条记录

db.optmp.save(db.oplog.rs.find( { }, { ts: 1, h: 1 } ).sort( {$natural : -1} ).limit(1).next() )     ---将最近一条记录存放到临时集合中

db.optmp.find()     ---验证是否记录已存入 , 类似如下:

{ "_id" : ObjectId("5b857e9aaa9ffcbad436b99d"), "ts" : Timestamp(1535468213, 1), "h" : NumberLong("-6700258201084773806") }

3 先删除原oplog.rs集合,然后修改oplogsize:

use local

db.oplog.rs.drop()

然后再创建新oplog.rs集合 ,这里创建为6G

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

{ "ok" : 1 }

> db.oplog.rs.stats().maxSize   # 可以看到变成6G了

NumberLong("6442450944")

4、还原之前备份的最近一条记录

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

> db.oplog.rs.find()          ---查询验证是否已插入

5、关闭当前单实例进程,然后修改配置,重新加入副本集

> use admin

> db.shutdownServer()

vim mongod.conf ,注释掉下面几行,然后修改下监听端口

net:

port: 27017

replication:

oplogSizeMB: 6144

replSetName: set01

mongod -f mongod.conf

6、检查节点状态

登录到mongo shell中检查节点是否成功加入副本集

> rs.status()

检查oplogSize是否生效

set01:SECONDARY> db.getReplicationInfo()

{

"logSizeMB" : 6144,    ## 可以看到这里变成6GB了

"usedMB" : 0.01,

"timeDiff" : 54,

"timeDiffHours" : 0.02,

"tFirst" : "Wed Aug 29 2018 01:19:49 GMT+0800 (CST)",

"tLast" : "Wed Aug 29 2018 01:20:43 GMT+0800 (CST)",

"now" : "Wed Aug 29 2018 01:24:16 GMT+0800 (CST)"

}

set01:SECONDARY> rs.printReplicationInfo()

configured oplog size:   6144MB

log length start to end: 54secs (0.02hrs)

oplog first event time:  Wed Aug 29 2018 01:19:49 GMT+0800 (CST)

oplog last event time:   Wed Aug 29 2018 01:20:43 GMT+0800 (CST)

now:                     Wed Aug 29 2018 01:24:41 GMT+0800 (CST)

在4.0里面,支持在线修改oplog的大小,从而不用重启:

db.adminCommand({replSetResizeOplog:1, size: 6144})        ## 设置为6GB, 注意这里的单位是 mb

use local

db.oplog.rs.stats().maxSize

4.0在线修改oplogsize的官方文档:https://docs.mongodb.com/manual/reference/configuration-options/index.html#replication.oplogSizeMB

附, 如何估算需要的oplogsize大小?

可以通过如下的命令查看当前的oplog能存放多久的操作记录:

    connecting to: 127.0.0.1:27017/admin

    set01:SECONDARY> rs.printReplicationInfo()

    configured oplog size:   4096MB

    log length start to end: 6223secs (1.73hrs)

    oplog first event time:  Mon Apr 22 2019 12:53:49 GMT+0800 (CST)

    oplog last event time:   Mon Apr 22 2019 14:37:32 GMT+0800 (CST)

    now:                     Mon Apr 22 2019 14:37:32 GMT+0800 (CST)

可以看到,目前的oplog是4GB ,根据oplog first event time 和 oplog last event time 的差值,可以得出4g的oplog 差不多能存放 100分钟 的op操作。

如果我们将oplogsize扩大到 20G ,差不多能存放 500分钟 的op操作。(即最大能容忍8小时的某个节点的宕机)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/08/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档