oplog 大小调整
mongosync程序使用变更流在源集群和目标集群之间同步数据。 mongosync
不直接访问权限oplog ,但当变更流返回过去的事件时,这些事件必须在oplog
时间范围。
mongosync
将源集群oplog
中的操作应用于目标集群上的数据。 当mongosync
未应用的操作滚动源集群上的oplog
时,同步将失败并且mongosync
退出。
注意
mongosync
不会将同步期间在源集群上进行的applyOps
操作复制到目标集群。
在初始同步期间,由于会同时复制文档, mongosync
可能会以较慢的速度应用操作。 初始同步后, mongosync
可以更快地应用更改,并且更有可能在oplog
中保持接近源集群上发生的实时写入的位置。
如果您预计同步大型数据集,或者计划长时间暂停同步,则可能会超过oplog window 。 使用oplogSizeMB
设置增加源集群上oplog
的大小。
监控初始同步所需的 oplog 大小
确定 oplog window
要获取oplog
运行db.getReplicationInfo()
中第一个条目和最后一个条目之间的秒数差异。 如果要复制分片集群,请在每个分片上运行该命令。
db.getReplicationInfo().timeDiff
返回的值是集群的最小oplog
窗口。 如果有多个分片,则最小的数字是最小oplog
窗口。
确定 mongosync 复制延迟
要获取lagTimeSeconds
值,请运行/progress命令。 延迟时间是指mongosync
应用的最后一个事件与源集群上的当前最新事件的时间之间的时间(以秒为单位)。
它用于衡量落后于源集群mongosync
的程度。
验证 oplog 大小
如果延迟时间接近最小oplog
窗口,请进行以下更改之一:
增大
oplog
窗口。 使用replSetResizeOplog
将minRetentionHours
设置为大于当前oplog
窗口。扩展
mongosync
实例。 添加 CPU 或内存以纵向扩展mongosync
节点,使其具有更高的复制速率。
注意
同步期间,复制延迟的oplog窗口和变化率可能会发生变化。 在迁移过程中重复这些步骤以监控进度。