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

注意事项

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

设置Balancer的活动窗口

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

说明 执行该操作须确保Balancer功能处于开启状态。如未开启,请参考开启Balancer功能

  1. use config
  • 执行如下命令设置Balancer的活动窗口。
  1. db.settings.update(
  2. { _id: "balancer" },
  3. { $set: { activeWindow : { start : "<start-time>", stop : "<stop-time>" } } },
  4. { upsert: true }
  5. )

说明

  • <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。管理MongoDB均衡器Balancer - 图1 相关操作:如您需要Balancer始终处于运行状态,您可以使用如下命令去除活动窗口的设置。

  1. db.settings.update({ _id : "balancer" }, { $unset : { activeWindow : true } })

开启Balancer功能

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

  1. use config
  • 执行如下命令开启Balancer功能。
  1. sh.setBalancerState(true)

关闭Balancer功能

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

  1. use config
  • 执行如下命令查看Balancer运行状态,如返回值为空。
  1. while( sh.isBalancerRunning() ) {
  2. print("waiting...");
  3. sleep(1000);
  4. }
  • 返回值为空,表示Balancer没有处于执行任务的状态,此时可执行下一步的操作,关闭Balancer 。
  • 返回值为waiting,表示Balancer正在执行块迁移,此时不能执行关闭Balancer的命令,否则可能引起数据不一致。 管理MongoDB均衡器Balancer - 图2
  • 确认执行第3步的命令后返回的值为空,可执行关闭Balancer命令。
  1. sh.stopBalancer()