MongoDB 分片管理(四)数据均衡

通常来说,MongoDB会自动处理数据均衡。

1.1 集群分片的块的均衡

注意,均衡器只使用块的数量,而非数据大小,来作为衡量分片间是否均衡的指标。

1.2 均衡器

1、执行所有数据库管理操作前,都应关闭均衡器

>sh.setBalancerState(flase)

均衡器关闭后,系统则不会在进入均衡状态。

到那时给命令不能立即终止正在进行中的均衡过程:迁移过程通常无法立即停止。

2、查看config.locks集合,一查看均衡器过程是否仍在进行中

>db.locks.find({"_id":"balancer"})["state"]

0表示关闭

3、均衡器会增加系统负载

目标分片必须查询源分片中的所有文档,将文档插入目标分片的块中,源分片最后必须删除这些文档。

在以下两种情况下,迁移会导致性能问题

(1)使用热点片键可保证定期迁移(因为所有的新块都是创建在热点上的)。系统必须有能力

处理源源不断写入到热点分片上的数据。

(2)向集群中添加新分片时,均衡器会试图为该分片写入数据,从而触发一些列的迁移过程。

4、可以在config.settings集合中为数据均衡指定一个时间窗口

如指定了均衡时间窗口,则应该对其进行严密监控,以确保mongos确实只在指定的时间内做均衡。

执行下列更新语句,均衡则只会在下午1点到4点间发生

>db.settings.update({"_id":"balancer"},

{"$set":{"activeWindow":{"start":"13:00","stop":"16:00"}}},

true

猜你喜欢

转载自www.cnblogs.com/xibuhaohao/p/11271683.html