MongoDB更改oplog的大小

背景

oplog是MongoDB数据库的操作日志,记录了MongoDB数据库的所有写操作,类似MySQL数据库的binlog日志。在MongoDB副本集中,oplog从主节点被复制到次级节点,通过次级节点对日志进行重做,实现次级节点与主节点数据一致。oplog日志保存在local.oplog.rs集合中。

写在前面
摘自https://www.cnblogs.com/lijiaman/p/13215564.html
link

修改oplog的大小

oplog大小修改根据数据库版本,有2种不同的方法:

在MongoDB 3.4及更早的版本中,直接删除并重建local.oplog.rs集合来调整操作日志的大小;

在MongoDB 3.6及后续的版本中,使用replSetResizeOplog命令来调整操作日志的大小;

从MongoDB 4.0开始,MongoDB禁止删除local.oplog.rs集合,所以只能用replSetResizeOplog来修改oplog的大小了。

这里演示在MongoDB 4.2版本上修改oplog的大小,先在次级节点上修改操作日志的大小,最后在主机点上修改。

具体操作步骤如下:

1. 连接到副本集成员

mongo --authenticationDatabase admin -u replica -p replica

2. 【可选】验证oplog的大小

use local
方式一:主上
db.oplog.rs.stats().maxSize
1038090240
方式二:
rs.printReplicationInfo()
configured oplog size:   990MB

3. 修改副本集节点oplog的大小,oplog必须大于990MB,这里改为1000MB

从上:
db.adminCommand({replSetResizeOplog:1,size:1000})

{
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1608619857, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1608619857, 1)
}
rs0:SECONDARY> rs.printReplicationInfo()

configured oplog size:   1000MB
log length start to end: 14847147secs (4124.21hrs)
oplog first event time:  Fri Jul 03 2020 10:38:40 GMT+0000 (UTC)
oplog last event time:   Tue Dec 22 2020 06:51:07 GMT+0000 (UTC)
now:                     Tue Dec 22 2020 06:51:09 GMT+0000 (UTC)

主上:
db.adminCommand({replSetResizeOplog:1,size:1000})

4. 【可选】压缩oplog.rs以回收磁盘空间

减小oplog的大小不会回收已经分配的磁盘空间,必须压缩oplog.rs来回收磁盘空间。

use local
db.runCommand({"compact" : "oplog.rs"})

注意:当执行压缩时,副本集成员无法复制oplog条目,可能会导致主节点的操作日志被覆盖,刺激节点无法同步数据而产生重新完全同步,建议在无业务的时间段内执行压缩操作。

本文说明,主要技术内容来自互联网技术大佬的分享,还有一些自我的加工(仅仅起到注释说明的作用)。如有相关疑问,请留言,将确认之后,执行侵权必删

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值