当前位置:  开发笔记 > 编程语言 > 正文

Mongo分片无法在分片之间分割大集合

如何解决《Mongo分片无法在分片之间分割大集合》经验,为你挑选了1个好方法。

我在mongo中看起来像是一个简单的分片设置有问题.

我有两个分片,一个mongos实例,以及一个像这样设置的配置服务器:

机器A - 10.0.44.16 - 配置服务器,mongos
机器B - 10.0.44.10 - 分片1
机器C - 10.0.44.11 - 分片2

我有一个名为'Seeds'的集合,它有一个分片键'SeedType',它是一个存在于集合中每个文档的字段,包含四个值之一(请看下面的分片状态).其中两个值的条目明显多于其他两个(其中两个有784,000个记录,两个有大约5,000个).

我期望看到的行为是,使用InventoryPOS的'Seeds'集合中的记录将最终出现在一个碎片上,而具有InventoryOnHand的记录将最终出现在另一个碎片上.

但是,似乎两个较大分片键的所有记录都在主分片上结束.

这是我的分片状态文本(为清晰起见,删除了其他集合):

--- Sharding Status ---
  sharding version: { "_id" : 1, "version" : 3 }
  shards:
      { "_id" : "shard0000", "host" : "10.44.0.11:27019" }
      { "_id" : "shard0001", "host" : "10.44.0.10:27017" }
  databases:
        { "_id" : "admin", "partitioned" : false, "primary" : "config" }
        { "_id" : "TimMulti", "partitioned" : true, "primary" : "shard0001" }
                TimMulti.Seeds chunks:
                        { "SeedType" : { $minKey : 1 } } -->> { "SeedType" : "PBI.AnalyticsServer.KPI" } on : shard0000 { "t" : 2000, "i" : 0 }
                        { "SeedType" : "PBI.AnalyticsServer.KPI" } -->> { "SeedType" : "PBI.Retail.InventoryOnHand" } on : shard0001 { "t" : 2000, "i" : 7 }
                        { "SeedType" : "PBI.Retail.InventoryOnHand" } -->> { "SeedType" : "PBI.Retail.InventoryPOS" } on : shard0001 { "t" : 2000, "i" : 8 }
                        { "SeedType" : "PBI.Retail.InventoryPOS" } -->> { "SeedType" : "PBI.Retail.SKU" } on : shard0001 { "t" : 2000, "i" : 9 }
                        { "SeedType" : "PBI.Retail.SKU" } -->> { "SeedType" : { $maxKey : 1 } } on : shard0001 { "t" : 2000, "i" : 10 }

我做错了吗?

半无关的问题:

在不阻塞整个mongo服务的情况下,将对象从一个集合原子转移到另一个集合的最佳方法是什么?

提前谢谢,-Tim



1> kristina..:

实际上,分片并不意味着以这种方式使用.您应该选择具有一些变体的分片键(或制作复合分片键),以便MongoDB可以制作合理大小的块.分片的一个要点是您的应用程序不必知道数据的位置.

如果你想手动分片,你应该这样做:启动未链接的MongoDB服务器并自己从客户端路由.

最后,如果您真的专注于此设置,您可以自己迁移块(有一个moveChunk命令).

平衡器根据内存中的映射量移动块(运行serverStatus并查看"映射"字段).可能需要一段时间,MongoDB不希望您的数据在生产中遍布整个地方,所以它非常保守.

半无关的答案:你不能通过分片原子地做到这一点(eval在多个服务器上不是原子的).你必须做一个findOne,插入,删除.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有