在 MongoDB 分片集群实例增删Shard节点、数据迁移等场景下,您可能需要修改均衡器Balancer的活动窗口期或开启关闭均衡器Balancer。
均衡器Balancer用于均衡分片集群实例中各Shard节点中的数据,不同版本的MongoDB实例工作原理存在区别。
在正常情况下,MongoDB分片集群的balancer是始终运行的。
Balancer负责在分片集群中平衡数据的分布,确保数据均匀地分布在各个分片上。
因此,通常情况下,balancer会持续运行以保持数据的平衡状态。
什么情况下会设置balancer的时间窗口?
设置balancer的时间窗口可以用于指定在特定时间段内执行数据平衡操作。这种设置通常在以下情况下使用:
-
维护窗口:在维护期间(例如数据备份、索引重建等)可以设置时间窗口,避免在此期间进行数据平衡操作,以免影响维护任务的性能。
-
业务高峰期:在业务高峰期间,可以设置时间窗口,避免在此期间进行数据平衡操作,以确保系统性能不受影响。
-
网络高负载时段:在网络高负载时段,可以设置时间窗口,以避免在此时段执行数据平衡操作,以减轻网络负载压力。
通过设置时间窗口,可以更灵活地控制Balancer的运行时间,以适应不同的业务需求和运维场景。
$ mongo --host xx.xx.xx --port XXX -u "XXX" -p "XXX" --authenticationDatabase admin
> use config
> sh.isBalancerRunning()
> sh.setBalancerState(true)
> use config
> db.settings.update(
{ _id: "balancer" },
{ $set: { activeWindow : { start : "<start-time>", stop : "<stop-time>" } } },
{ upsert: true }
)
db.settings.update(
{ _id: "balancer" },
{ $set: { activeWindow : { start : "01:00", stop : "03:00" } } },
{ upsert: true }
)
image.png
如果您需要Balancer始终处于运行状态,您可以执行如下命令去除活动窗口的设置:
> use config
db.settings.update({ _id : "balancer" }, { $unset : { activeWindow : true } })
参考
管理MongoDB均衡器Balancer
https://help.aliyun.com/zh/mongodb/use-cases/manage-the-apsaradb-for-mongodb-balancer
网友评论