Docs 菜单
Docs 主页
/
MongoDB Cluster-to-Cluster Sync
/

oplog 大小调整

在此页面上

  • Considerations
  • 监控初始同步所需的 oplog 大小
  • 确定 oplog window
  • 确定 mongosync 复制延迟
  • 验证 oplog 大小

mongosync程序使用变更流在源集群和目标集群之间同步数据。 mongosync不直接访问权限oplog ,但当变更流返回过去的事件时,这些事件必须在oplog时间范围。

mongosync 将源集群oplog中的操作应用于目标集群上的数据。 当mongosync未应用的操作滚动源集群上的oplog时,同步将失败并且mongosync退出。

注意

mongosync 不会将同步期间在源集群上进行的applyOps操作复制到目标集群。

在初始同步期间,由于会同时复制文档, mongosync可能会以较慢的速度应用操作。 初始同步后, mongosync可以更快地应用更改,并且更有可能在oplog中保持接近源集群上发生的实时写入的位置。

如果您预计同步大型数据集,或者计划长时间暂停同步,则可能会超过oplog window 。 使用oplogSizeMB设置增加源集群上oplog的大小。

目标集群必须有足够的磁盘存储,以容纳正在迁移的逻辑数据大小以及初始同步中的目标oplog条目。示例,要迁移10 GB的数据,目标集群必须至少有 10 GB用于数据,另外 10 GB用于初始同步中的插入oplog条目。

要减少目标oplog条目的开销,您可以:

  • 使用oplogSizeMB 设置来减小目标集群的oplog大小。

  • 用于oplogMinRetentionHours 设置来降低或删除目标集群的最短oplog保留期。

1

要获取oplog运行db.getReplicationInfo()中第一个条目和最后一个条目之间的秒数差异。 如果要复制分片集群,请在每个分片上运行该命令。

db.getReplicationInfo().timeDiff

返回的值是集群的最小oplog窗口。 如果有多个分片,则最小的数字是最小oplog窗口。

2

要获取lagTimeSeconds值,请运行/progress命令。 延迟时间是指mongosync应用的最后一个事件与源集群上的当前最新事件的时间之间的时间(以秒为单位)。

它用于衡量落后于源集群mongosync的程度。

3

如果延迟时间接近最小oplog窗口,请进行以下更改之一:

  • 增大oplog窗口。 使用replSetResizeOplogminRetentionHours设置为大于当前oplog窗口。

  • 扩展mongosync实例。 添加 CPU 或内存以纵向扩展mongosync节点,使其具有更高的复制速率。

注意

同步期间,复制延迟的oplog窗口和变化率可能会发生变化。 在迁移过程中重复这些步骤以监控进度。

后退

使用 Workload Identity Federation 进行身份验证