【问题标题】:How to shrink MongoDB's oplog.rs collection?如何缩小 MongoDB 的 oplog.rs 集合?
【发布时间】:2020-11-02 10:15:03
【问题描述】:

在 MongoDB 4.2.5(3 个节点复制集)中存储了一些二进制数据后,oplog.rs 集合确实增长到了 ca。 700MB。二进制数据被删除,数据模型被重组,但oplog.rs 集合的大小保持不变(如预期的那样)。我确实知道这是一个具有最大尺寸的封顶集合,最终它将重用空间。不过,就我而言,我想收回空间并重新开始。该数据库主要用于内部测试目的。我不介意从 oplog 中丢失一些数据,但我确实介意有一个大的 oplog 文件,因为整个数据库只有几 MB。

在复制集场景中对oplog.rs 集合使用emptycapped 命令是否安全?我需要在每个节点上运行此命令吗?删除后是否需要压缩集合(https://docs.mongodb.com/manual/tutorial/change-oplog-size/ 的最后一部分)?

有没有其他方法可以优雅地“重置”oplog并释放空间?

【问题讨论】:

    标签: mongodb mongodb-oplog


    【解决方案1】:

    OpLog 受限于您在配置中定义的大小或是否将其保留为默认值。

    OpLog(操作日志)是一个特殊的上限集合,它保留所有修改存储在数据库中的数据的操作的滚动记录。

    随着更改的进行(或 noops 心跳),它会填充到定义的大小。

    如果要减小大小,请在配置中重置 OpLog 大小。但不要忘记,更大的 OpLog 大小意味着您可以获得更好的 OpLog 窗口。

    OpLog 窗口告诉您次要成员可以离线多长时间,并且在不进行完全重新同步的情况下仍能赶上主要成员。

    【讨论】:

    • 如何减小config中oplog的大小?我可以将其设置为例如 1 MB 还是有任何下限?你能定义步骤吗?它在复制集设置中如何工作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多