分片集群内部有 balancer 模块进行数据均衡,保证每个 shard 的 chunk 个数大体相同。Balancer 操作涉及到 chunk 迁移,因此也会占用 shard server 上的硬件资源。
用户可以通过配置 balancer 窗口来指定后台哪些时间段进行数据均衡操作,通过将均衡操作指定在业务低峰期,可以有效避免对线上业务的影响。
设置和步骤和方法如下:
7. 使用 mongo shell 连接到 mongos 节点。
8. 切换到 config 数据库(use config)。
9. 确认 balancer 开关是开启的(sh.getBalancerState())。
10. 设置 balancer 时间窗口。
db.settings.update(
{ _id: "balancer" },
{ $set: { activeWindow : { start : "<起始时间>", stop : "<结束时间>" } } },
{ upsert: true }
)其中 “起始时间” 和 “结束时间” 都是 HH:MM 的形式,比如 02:30。