MongoDB的副本集同步中Oplog占了非常关键的作用。
<人力资源/>Oplog大小可不可以随意更改?
https://docs.mongodb.com/manual/reference/configuration-options/replication.oplogSizeMB
引用>
官方配置文档说明replication.oplogSizeMB 类型:整数 的最大大小复制操作日志(即以兆字节为单位。oplog)。 在MongoDB 4.0开始,过去oplog可以长其配置的大小限制,以避免删除大多数提交点。 默认情况下,mongod过程创建一个基于oplog> <李>以单节点模式重启节点
在主节点上可以使用<代码> rs.stepDown() 代码>指令来强制手动切换为二级节点。
引用> 李> <李>并保留就的oplog的条目作为查询条件,清空oplog。rs集合并重新建立指定大小的oplog。rs集合。
李> <李>以副本集模式启动mongod实例。
李> <人力资源/><>以前比;db.shutdownServer ()
在其他端口上以单节点模式(不包含——replSet参数)重新启动<代码> mongod 代码>实例。命令如下:
# sudo - u mongod mongod——端口37017 dbpath/var/lib/mongo
我们可以选择备份现有结点的oplog来以防万一,命令如下:mongodump——端口37017 db当地——“oplog集合。rs”<>以前比;使用本地
保存oplog中最新的条目,例如,连接进入<代码> mongo Shell> 代码,并通过如下命令进入当地的数据库:在<代码> mongo Shell代码>窗口中,我们也可以使用如下命令来设置<代码> db 代码>:
<>以前比;db=db.getSiblingDB(当地)确保<代码>本地。临时> 代码集合为空的:
比;db.temp.drop ()使用自然秩序排序来找到oplog中最后一条数据,并通过<代码> db.collection.save() 代码>命令插入<代码>本地。临时> 代码集合中:
比;db.temp.save (db.oplog.rs。找到({},{ts: 1、h: 1})。排序({$自然:1}).limit (1) . next()方法)检验<代码>本地。临时> 代码集合中保存的最后一条oplog数据:
比;db.temp.find ()<>以前比;db=db.getSiblingDB(当地) 比;db.oplog.rs.drop ()
通过如下命令在当地<代码> >代码库中删除老的<代码> oplog。rs> 代码集合:结果会返回真正<代码> 代码>
<>以前比;db.runCommand({创建:“oplog。rs”,限制:真的,大小:(20 * 1024 * 1024 * 1024)})
通过<代码>创建代码> 命令来建立新的oplog(新的大小)。指定大小(单位是字节)。下面的命令会建立一个大小为<代码> 20 * 1024 * 1024 * 1024> 代码也就是20克的oplog集合:命令执行成功后会返回如下内容:
{" ok ": 1}<>以前比;db.oplog.rs。保存(db.temp.findOne ())
通过如下命令来确认:
<>以前比;db.oplog.rs.find ()<>以前比;db=db.getSiblingDB(管理) 比;db.shutdownServer () #服务mongod重启
该复制集将会恢复并会在其成为主节点之前“迎头赶上”数据。
MongoDB更改Oplog大尺寸小