【发布时间】:2021-02-12 22:07:46
【问题描述】:
我们使用以下设置成功创建了一个正常工作的 MongoDB 集群:
- 2x MongoOS 路由器
- 2x 复制配置节点(元数据)
- 6x 非复制分片节点(故意不复制)
所有单独的实例在 CPU、MEM、磁盘空间等方面都是相同的。
集群本身似乎工作得很好。我们使用这些分片命令来分配分片:
sh.shardCollection("blockchains.ethereum_balance",{"dapp_id":"hashed"})
sh.shardCollection("blockchains.ethereum_daily",{"to":"hashed"})
等等
但是,存储分布似乎不相等或至少效率不高:
问题:
- 如果我们添加一个新的分片,新节点是否会从“旧”节点获取一些信息? (“旧”分片正在移动部分数据)
- 这种情况下如何管理存储分布?
任何想法表示赞赏。
编辑:
似乎新创建的分片只是一些集合的一部分。自动迁移需要时间。
此外,索引仅保留每个分片。为了让 Mongo 将一些块移动到新创建的分片中,索引也应该在目标分片中。
【问题讨论】:
-
阅读分片键、分片键选择和块平衡器。
标签: mongodb cluster-computing sharding