Mongodb在线修改oplog大小

Posted dbboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb在线修改oplog大小相关的知识,希望对你有一定的参考价值。

MongoDB 3.6开始,可以使用命令replSetResizeOplog修改副本集成员的oplog大小,从secondary节点开始修改,然后依次到主节点。本文测试环境为MongoDB 4.2。

可以通过命令查看oplog大小

handong1:PRIMARY> use local
switched to db local
handong1:PRIMARY> db.oplog.rs.stats().maxSize
NumberLong("5242880000")

maxSize字段以字节为单位显示集合大小,可以看到当前节点oplog大小为5242880000/1024/1024=5000MB。

接下来我们修改副本集(一主一从一仲裁)各个成员的oplog大小。
先修改secondary节点的oplog大小。

handong1:SECONDARY> use local
switched to db local
handong1:SECONDARY> db.oplog.rs.stats().maxSize
NumberLong("10485760000")
handong1:SECONDARY> db.adminCommand({replSetResizeOplog: 1, size: 2000})
{
    "ok" : 1,
    "$clusterTime" : {
        "clusterTime" : Timestamp(1617786418, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    },
    "operationTime" : Timestamp(1617786418, 1)
}
handong1:SECONDARY> db.oplog.rs.stats().maxSize
NumberLong(2097152000)

secondary节点oplog大小改为了2000MB。

然后修改primary节点的oplog大小。

handong1:PRIMARY> use local
switched to db local
handong1:PRIMARY> 
handong1:PRIMARY> db.oplog.rs.stats().maxSize
NumberLong("5242880000")
handong1:PRIMARY> db.adminCommand({replSetResizeOplog: 1, size: 2000})
{
    "ok" : 1,
    "$clusterTime" : {
        "clusterTime" : Timestamp(1617786579, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    },
    "operationTime" : Timestamp(1617786579, 1)
}
handong1:PRIMARY> db.oplog.rs.stats().maxSize
NumberLong(2097152000)

可以看到primary节点oplog大小也修改为了2000MB。

以上是关于Mongodb在线修改oplog大小的主要内容,如果未能解决你的问题,请参考以下文章

mongoDB复制集修改 oplog 大小

rolling方式修改oplog

MongoDB复制集(实现选举复制故障切换升级oplog大小认证复制)

MongoDB-3.2 oplog删除策略优化

实时同步MongoDB Oplog开发指南

单实例MongoDB 如何开启Oplog