概念

rs中存储了每一次对mongo数据库的CUD操作,对rs的大小进行resize.

主要有两种方法:

  1. 在未开启过rs的情况下,修改配置文件
  2. 已使用rs一段时间后,发现rs太大,重新进行大小配置

启动

默认启动

mongod --port 27010 --dbpath /data/mongodb

配置文件启动

mongod --port 27010 --config /etc/mongodb_xng.conf
# 配置文件中配置了dbPath和日志等信息

rs启动

mongod --port 27010 --config /etc/mongodb_xng.conf --replSet rs

修改配置文件

vim /etc/mongodbXXX.conf
oplogSize = 500 # 以M为单位

修改opLog大小

修改的过程主要分为三步:

  • 以单机模式重启mongod
  • 启动之后,重新创建oplog,并保留最后一个记录作为种子
  • 以复制集方式重启mongod

详细过程是:

step1:以单机模式重启mongod

对于Primary成员,首先调用stepDown函数,强制Primary成员转变为Secondary成员

rs.stepDown() # 如果没有Secondary,可以忽略此步骤

对于secondary成员,调用shutdownServer()函数,关闭mongod

use admin
db.shutdownServer()

启动mongod实例,不要使用replset参数

mongod --port 27010 --config /etc/mongodb_xng.conf

step2:创建新的oplog

有备无患,备份oplog文件

mongodump --db local --collection 'oplog.rs' --port 27010  # 会把数据导出到当前目录下的dump文件夹下,需要注意存储资源

将oplog中最后一条有效记录保存到temp 集合中,作为新oplog的seed

use local

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

db.oplog.rs.drop()

重建新的oplog集合,并将temp集合中一条记录保存到oplog中,size的单位是Byte

db.runCommand( { create: "oplog.rs", capped: true, size: (2 * 1024 * 1024 * 1024) } )
db.oplog.rs.save( db.temp.findOne() )

step3:以复制集模式启动 mongod,replset参数必须制定正确的Replica Set的名字

db.shutdownServer()
mongod --port 27010 --config /etc/mongodb_xng.conf --replSet rs

Mongo rs的更多相关文章

  1. mongo 复制集命令

    1.登录primary2.use admin >rs.add("new_node:port") 或 rs.add({"_id":4,"host& ...

  2. 用elasticsearch索引mongodb数据

    参照网页:单机搭建elasticsearch和mongodb的river 三个步骤: 一,搭建单机replicSet二,安装mongodb-river插件三,创建meta,验证使用 第一步,搭建单机m ...

  3. mongodb副本集搭建

    1.创建目录 mkdir -p /data/r1  /data/r2  /data/r3 2.启动: bin/mongod --config ../mongod.conf --replSet r1 b ...

  4. solr搜索引擎配置使用mongodb作为数据源

    环境说明: 操作系统:由于是使用的docker直接拉取的镜像部署的,系统是LINUX环境 mongodb: 4.0.3 solr: 7.5.0 python: 3.5 配置mongodb 1.拉取mo ...

  5. Mongodb主从模式SECONDARY提升为PRIMARY

    生产环境不建议仅使用PRIMARY-SECONDARY模式 当primary挂掉,并且无法恢复时,可以把secondary提升为主节点. 注意:此时从节点可能有部分数据未同步过来,部分数据可能丢失. ...

  6. mongodb之 复制集维护小结

    原文地址:https://www.cnblogs.com/zhaowenzhong/p/5667312.html 一.新增副本集成员 1.登录primary 2.use admin >rs.ad ...

  7. 在Docker中安装和部署MongoDB集群

    此文已由作者袁欢授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 在Docker中安装mongodb 采用的mongodb镜像:https://registry.hub.doc ...

  8. kubernetes上安装MongoDB-3.6.5集群副本集方式

    一.安装部署: 想直接一步创建集群的小伙伴直接按以下步骤安装(再往后是记录自己出过的错): 1.生成docker镜像: docker build -t 144.202.127.156/library/ ...

  9. MongoDB复制二:复制集的管理

    1.修改oplog的大小  需要在每个机器上都配置.先在secondary上操作,最后在primary上操作. 1)以单机的方式重启复制集的实例 db.shutdownServer() 在新的端口中启 ...

随机推荐

  1. poj2226-Muddy Fields二分匹配 最小顶点覆盖 好题

    题目 给到一个矩阵,有些格子上是草,有些是水.需要用宽度为1,长度任意的若干块木板覆盖所有的水,并不能覆盖草,木板可以交叉,但只能横竖放置,问最少要多少块板. 分析 经典的矩阵二分图构图和最小点覆盖. ...

  2. 在web项目中配置log4j

    在web.xml中添加如下代码 <context-param> <param-name>contextConfigLocation</param-name> < ...

  3. JavaSE--异常机制

    异常就是程序在运行时出现的不正常情况.发生在运行时期,java程序在运行时期发生的不正常情况,此时java就按照面向对象的思想对不正常现象进行描述和对象的封装.异常的由来:问题也是现实生活中一个具体的 ...

  4. Azure中配置和发布 Nginx docker到互联网

    当Azure build一个Niginx docker 镜像时,无法通过浏览器访问这个镜像,于是想到了把这个网站发布到互联网中,这样就能验证网站是否正确. 本问跳过如何创建Azure Ubantu的虚 ...

  5. linux入门到高级

    目  录 1. Linux入门篇.................................................................................... ...

  6. yii的多表查询

    获取用户发布消息的指定消息id的总和点赞数 Yii $productIds = ['2260', '2262', '2263', '2268', '2269']; $plSql = Like::fin ...

  7. 【Java面试题】解释内存中的栈(stack)、堆(heap)和静态存储区的用法

    Java面试题:解释内存中的栈(stack).堆(heap)和静态存储区的用法 堆区: 专门用来保存对象的实例(new 创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型 ...

  8. 15、Nginx动静分离实战

    1.Nginx动静分离基本概述 动静分离, 通过中间件将动静分离和静态请求进行分离. 那为什么要通过中间件将动态请求和静态请求进行分离? 减少不必要的请求消耗, 同时能减少请求的延时. 通过中间件将动 ...

  9. Zookeeper的客户端使用

    1.1 Zookeeper API(原生) 1)连接的创建是异步的,需要开发人员自行编码实现等待 2)连接没有超时自动的重连机制 3)Zookeeper本身没提供序列化机制,需要开发人员自行指定,从而 ...

  10. 06-spring框架—— Spring 与Web

    在 Web 项目中使用 Spring 框架,首先要解决在 web 层(这里指 Servlet)中获取到 Spring容器的问题.只要在 web 层获取到了 Spring 容器,便可从容器中获取到 Se ...