集群必须有足够的数据才能进行均衡。通过在分片之间迁移 chunk 数据块来进行负载均衡,直到每个分片具有大致相同数量的分块 。
默认块大小为 64M 字节。在集群中的 chunk 数据块数量不平衡差异没有超过迁移阈值之前, MongoDB 不会开始迁移 。此行为有助于防止不必要的块迁移降低整个集群的性能 。
如果刚刚部署了分片集群,请确保有足够的数据来使分片生效。如果没有足够的数据来创建超过 8 个 64 MB 的块,那么所有数据都将保留在一个分片上。要么降低块大小设置,要么向集群添加更多数据 。
作为一个相关问题,系统将仅在插入或更新时拆分块,这意味着如果配置了分片并且不继续发出插入和更新操作,则数据库将不会创建任何块。可以等到应用程序插入数据或手动拆分块 。
最后,如果片键具有低基数, MongoDB 可能无法在数据之间创建足够的分割( chunk 将无法继续分裂) 。
收起