MongoDB中怎么修改oplogSize-创新互联
这篇文章将为大家详细讲解有关MongoDB中怎么修改oplogSize,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
为天等等地区用户提供了全套网页设计制作服务,及天等网站建设行业解决方案。主营业务为成都做网站、成都网站设计、天等网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!1、关闭此节点并以单实例启动
1.1关闭节点进程
SECONDARY> db.shutdownServer()
1.2注销Replica set相关启动参数
并修改port端口号(假设原来是27001,现改为37001)
1.3 重新启动
/apps/mongodb/bin/mongod -f /data/johnny/cfg/shard1.cnf
2、备份节点oplog日志
全备当前节点的所有oplog记录
mongodump --port 37001 --db local --collection 'oplog.rs'
备份oplog.rs中最近的一条oplog记录
>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("5a0d437ed4738d194fa0b94f"), "ts" : Timestamp(1510389543, 1), "h" : NumberLong("-2633465233485407995") }
3、修改oplogSize
删除原oplog.rs集合
>use local >db.oplog.rs.drop()
创建新oplog.rs集合
> db.runCommand( { create: "oplog.rs", capped: true, size: (2 * 1024 * 1024 * 1024) } ) { "ok" : 1 } ---成功的话将返回ok
4、还原之前备份的最近一条记录
> db.oplog.rs.save(db.optmp.findOne()) > db.oplog.rs.find() ---查询验证是否已插入
5、重新加入副本集
5.1 关闭当前单实例进程
>db.shutdownServer()
5.2 恢复配置文件信息
(注意oplogSizeMB参数值的修改)
5.3 启动实例进程
/apps/mongodb/bin/mongod -f /data/johnny/cfg/shard1.cnf
6、检查节点状态
登录到mongo shell中检查节点是否成功加入副本集架构
>rs.status() 检查oplogSize是否生效(红色字体) SECONDARY> rs.printReplicationInfo() configured oplog size: 2048MB log length start to end: 0secs (0hrs) oplog first event time: Sat Nov 11 2017 16:39:03 GMT+0800 (CST) oplog last event time: Sat Nov 11 2017 16:39:03 GMT+0800 (CST) now: Thu Nov 16 2017 17:00:32 GMT+0800 (CST)
7、根据上述步骤依次修改副本集的其他成员的oplogSize参数
注:修改Primary节点时,记得先使用如下命令降级,然后再修改
Primary>rs.stepDown() ---可以更有效的产生选举
方法二:
3.6版本后支持的动态修改方法
1.修改之前的参数大小:
replication: oplogSizeMB: 1024 replSetName: shardrs1
登录到mongo shell后查看oplog.rs集合大小
> use local switched to db local > db.oplog.rs.stats().maxSize NumberLong(1073741824) ---单位bytes,即2014MB
2.通过管理命令修改
> use local switched to db local > db.adminCommand({replSetResizeOplog:1, size: 2048}); ---2048的单位也MB { "ok" : 1, "operationTime" : Timestamp(1537776585, 1), "$clusterTime" : { "clusterTime" : Timestamp(1537776585, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
3.验证是否成功
> db.oplog.rs.stats().maxSize NumberLong("2147483648")
至此我们的oplog size动态修改完毕,是不是很简单,是不是很easy?
思考:
问1:replSetResizeOplog命令会不会同时修改了replication.oplogSizeMB参数值呢?
答:我此时查看启动配置文件,发现oplogSizeMB依然是1024;
问2:重启后会不会配置文件中的参数值就更改为修改值了呢?
答:重新启动数据库实例后,我发现并没有,还是最初值
问3:那么重启后,新修改值会失效吗?
答:我再次发现并没有,仍然使用最新值
shardrs1:PRIMARY> db.oplog.rs.stats().maxSize NumberLong("2147483648")
关于MongoDB中怎么修改oplogSize就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
本文标题:MongoDB中怎么修改oplogSize-创新互联
本文路径:http://ybzwz.com/article/pgcdd.html