Mongodb mongo如何选择要移动的块

Mongodb mongo如何选择要移动的块,mongodb,nosql,Mongodb,Nosql,我尝试将一些块从一个碎片移动到另一个碎片,以移除读取热点。我做了以下工作: 停止自动平衡sh.停止平衡器() 使用sh.moveChunk将一些块从一个碎片移动到另一个碎片。在此之后,目标碎片包含更多的碎片,然后是其他碎片 已启动自动平衡回位sh.启动平衡器() 重新启动自动平衡后,刚刚手动移动的相同块会返回到复制的碎片 我如何才能禁止它们向后移动?mongo使用什么算法来决定下一轮平衡期间哪个区块将移动?只是好奇,为什么要手动移动数据并阻止仅对某些区块进行平衡操作?由于其“范围”性质,使用了群

我尝试将一些块从一个碎片移动到另一个碎片,以移除读取热点。我做了以下工作:

  • 停止自动平衡
    sh.停止平衡器()
  • 使用sh.moveChunk将一些块从一个碎片移动到另一个碎片。在此之后,目标碎片包含更多的碎片,然后是其他碎片
  • 已启动自动平衡回位
    sh.启动平衡器()
  • 重新启动自动平衡后,刚刚手动移动的相同块会返回到复制的碎片


    我如何才能禁止它们向后移动?mongo使用什么算法来决定下一轮平衡期间哪个区块将移动?

    只是好奇,为什么要手动移动数据并阻止仅对某些区块进行平衡操作?由于其“范围”性质,使用了群集键,导致数据分布不均。大多数情况下,所有客户数据都驻留在单个分片上,但有些客户非常大,我想将他们的数据分布在更多的分片上。好的,那么为什么不选择一个更好的切分键呢?数据库非常大,在这个阶段重新切分是不可行的,因为只要均衡器正在运行,就无法阻止块移动。当碎片在区块数量上不平衡时,区块移动。我在这里看不到太多选项:更改切分键或手动执行平衡。无论哪种方式,都是相当痛苦的。