如何管理均衡器Balancer
使用场景
- 建议在业务低峰期时开启Balancer。
- 建议在业务高峰期时关闭Balancer。
- 建议设置Balancer的活动窗口,让其在业务低峰期工作。
使用限制
- 只有集群实例支持Balancer功能管理操作。
- Balancer功能默认是开启状态。
开启Balancer
- 通过Mongo Shell连接集群实例。
- 在dds mongos节点命令行中,切换至config数据库。
use config
- 执行如下命令,开启Balancer功能。
sh.setBalancerState(true)
关闭Balancer
- 通过Mongo Shell连接集群实例。
- 在dds mongos节点命令行中,切换至config数据库。
use config
- 执行如下命令,查看Balancer运行状态。
while( sh.isBalancerRunning() ) { print("waiting..."); sleep(500); }
- 如返回值为空,则表示Balancer没有处于执行任务的状态,此时可执行下一步的操作,关闭Balancer 。
- 如返回值为waiting,则表示Balancer正在执行块迁移,此时不能执行关闭Balancer的命令,否则可能引起数据不一致。
- 如执行步骤 3的命令后返回的值为空,可执行关闭Balancer命令。
sh.stopBalancer()
设置Balancer的活动窗口
为避免迁移给业务带来影响,您可以通过该操作使Balancer在规定时间内工作。
- 通过Mongo Shell连接集群实例。
- 在dds mongos节点命令行中,切换至config数据库。
use config
- 执行如下命令,设置Balancer的活动窗口。
db.adminCommand({"setBalancerActiveWindow": 1, start : "<start-time>", stop : "<stop-time>"})
- <start-time>:开始时间,时间格式为HH:MM(UTC时间),HH取值范围为00 - 23,MM取值范围为00 - 59。
- <stop-time>:结束时间,时间格式为HH:MM(UTC时间),HH取值范围为00 - 23,MM取值范围为00 - 59。
- 使用rwuser执行setBalancerActiveWindow调整balancer时间窗口,如出现“CommandNotFound"报错,其原因是小版本低。发生此情况请升级实例小版本后尝试,或您可以提交工单申请,完成工单提交。
执行sh.status()命令,查看Balancer的活动窗口。如图1所示,活动窗口被设置为22:00 - 24:00。
去除Balancer的活动窗口
如需Balancer始终处于运行状态,请按照如下命令设置:
db.adminCommand({ 'unsetBalancerActiveWindow' : 1 })