云数据库支持均衡器 Balancer 管理操作。在一些特殊的业务场景下,您可以启用或者关闭 Balancer 功能,设置活动窗口等操作。

注意事项

  • Balancer 属于分片集群架构中的功能,该操作仅适用于分片集群实例。
  • Balancer 的相关操作可能会占用实例的资源,请在业务低峰期操作。

设置Balancer的活动窗口

均衡器在执行块迁移操作时将占用实例中节点的资源,可能造成节点的资源使用率不均衡,影响业务使用。为避免块迁移给您的业务带来影响,您可以通过设置均衡器的活动窗口,让其在指定的时间段工作。

说明 执行该操作须确保 Balancer 功能处于开启状态。如未开启,请参考开启 Balancer 功能
  1. 通过 Mongo Shell 登录MongoDB数据库
  2. 在 mongos 节点命令窗口中,切换至 config 数据库。
    use config
  3. 执行如下命令设置 Balancer 的活动窗口。
    db.settings.update(
       { _id: "balancer" },
       { $set: { activeWindow : { start : "<start-time>", stop : "<stop-time>" } } },
       { upsert: true }
    )
    说明
    • <start-time>:开始时间,时间格式为HH:MM(北京时间),HH取值范围为00 - 23,MM取值范围为00 - 59。
    • <stop-time>:结束时间,时间格式为HH:MM(北京时间),HH取值范围为00 - 23,MM取值范围为00 - 59。
    您可以通过执行sh.status()命令查看 Balancer 的活动窗口。如下示例中,活动窗口被设置为01:00- 03:00。

相关操作:如您需要 balancer 始终处于运行状态,您可以使用如下命令去除活动窗口的设置。
db.settings.update({ _id : "balancer" }, { $unset : { activeWindow : true } })                

开启 Balancer 功能

如果您设置了数据分片,开启 Balancer 功能后可能会立即触发均衡任务。这将占用实例的资源,请在业务低峰期执行该操作。

  1. 通过 Mongo Shell 登录MongoDB数据库
  2. 在 mongos 节点命令窗口中,切换至 config 数据库。
    use config
  3. 执行如下命令开启 Balancer功能。
    sh.setBalancerState(true)

关闭 Balancer 功能

云数据库MongoDB的 Balancer 功能默认是开启状态。如果在某些特殊业务场景下需要临时关闭,请参考下述步骤进行操作。

  1. 通过 Mongo Shell 登录MongoDB数据库
  2. 在 mongos 节点命令窗口中,切换至 config 数据库。
    use config
  3. 执行如下命令查看 Balancer 运行状态,如返回值为空。
    while( sh.isBalancerRunning() ) {
              print("waiting...");
              sleep(1000);
    }
    • 返回值为空,表示 Balancer 没有处于执行任务的状态,此时可执行下一步的操作,关闭 Balancer 。
    • 返回值 waiting 表示 Balancer 正在执行块迁移,此时不能执行关闭 Balancer 的命令,否则可能引起数据不一致。


  4. 确认执行第3步的命令后返回的值为空,可执行关闭 Balancer 命令。
    sh.stopBalancer()