7.2. 异步复制

慢操作

从节点复制主节点的操作日志,并将操作异步应用于其数据集。通过从节点同步主节点的数据集,即使一个或多个成员失败,副本集(MongoDB 集群)也可以继续运行。

从 4.2 版本开始,副本集的从节点记录慢操作(操作时间比设置的阈值长)的日志条目。这些慢操作在 REPL (opens new window)组件下的 诊断日志 (opens new window)中记录了日志消息,并使用了文本 op: 花费了 ms。这些慢操作日志条目仅取决于慢操作阈值,而不取决于日志级别(在系统级别或组件级别),配置级别或运行缓慢的采样率。探查器不会捕获缓慢的操作日志条目。

复制延迟和流控

  • 复制延迟(Replication lag (opens new window))是指将主节点上的写操作复制到从节点上所花费的时间。较短的延迟时间是可以接受的,但是随着复制延迟的增加,可能会出现严重的问题:比如在主节点上的缓存压力。
  • 从 MongoDB 4.2 开始,管理员可以限制主节点的写入速率,使得大多数延迟时间保持在可配置的最大值 flowControlTargetLagSeconds (opens new window)以下。
  • 默认情况下,流控是开启的。
  • 启用流控后,随着延迟时间越来越接近 flowControlTargetLagSeconds (opens new window),主对象上的写操作必须先获得令牌,然后才能进行锁定并执行写操作。通过限制每秒发出的令牌数量,流控机制尝试将延迟保持在目标以下。