MongoDB3.2 之 oplogSize修改

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

MongoDB3.2 之 oplogSize修改

前言:

 有时候由于某些情况,我们需要修改oplogSize大小,由于目前版本3.2不支持在线修改,好像说是3.6版本将支持在线修改,所以我们只能对副本集成员逐一进行。

:primary节点最后修改,先修改可能会成为主节点的secondary节点开始。

大致步骤如下:

  • 重启节点为单实例方式运行(不同端口)
  • 修改oplog大小(保留最近的一条oplog记录)
  • 重新加入副本集

修改Secondary:

1、关闭此节点并以单实例启动

关闭节点进程

SECONDARY> db.shutdownServer()

注销Replica set相关启动参数,并修改port端口号
1514538437965
1514538442527
单实例方式启动

/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、重新加入副本集

关闭当前单实例进程

>db.shutdownServer()

恢复配置文件信息(注意oplogSizeMB参数值的修改)
1514538581181
1514538592725
启动实例进程

/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)

修改Primary节点

1、切换主从

Primary>rs.stepDown()          ---可以更有效的产生选举

2、待角色变为Secondary后,按上述步骤修改oplogSize

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
3月前
|
存储 Kubernetes NoSQL
k8s快速创建MongoDB
k8s快速创建MongoDB
|
6月前
|
监控 NoSQL 算法
【MongoDB】MongoDB的复制如何工作?
【4月更文挑战第1天】【MongoDB】MongoDB的复制如何工作?
|
6月前
|
NoSQL MongoDB
MongoDB代码操作
MongoDB代码操作
|
6月前
|
NoSQL MongoDB 数据库
【MongoDB】MongoDB中执行查询
【4月更文挑战第3天】【MongoDB】MongoDB中执行查询
|
6月前
|
NoSQL MongoDB 数据库
MongoDB 命令
MongoDB 命令
87 0
|
NoSQL MongoDB 数据库
Mongodb的修改数据讲解|学习笔记
快速学习 Mongodb 的修改数据讲解
|
NoSQL Shell Linux
MongoDB(2)- 安装 MongoDB
MongoDB(2)- 安装 MongoDB
275 0
MongoDB(2)- 安装 MongoDB
|
NoSQL 程序员 C#
C#简单操作MongoDB
一 安装MongoDB 官网按需下载, 安装, 一步到位. 二 VS创建新项目 创建一个.netcore console项目, 然后nuget安装驱动MongoDB.Driver 三 建立连接 在Program.
2544 0
|
NoSQL MongoDB
MongoDB修改文档
MongoDB修改文档 一、文档替换     文档替换其实在之前已经有讲过了,就是传入两个对象,第一个对象作为调节,第二个条件作为满足条件的文档修改的内容,例如:     db.test.
1716 0