我在mongo的简单分片设置中遇到了问题。
我有两个分片、一个mongos实例和一个配置服务器,如下所示:
Machine A - 10.0.44.16 - 配置服务器,mongos Machine B - 10.0.44.10 - 分片1 Machine C - 10.0.44.11 - 分片2
我有一个名为“Seeds”的集合,其中包含一个分片键“SeedType”,这是该集合中每个文档都有的字段,并包含四个值之一(请查看下面的分片状态)。其中两个值比另外两个值要多得多(其中两个值分别有784,000条记录,而另外两个值大约有5,000条记录)。
我期望看到的行为是,“Seeds”集合中具有InventoryPOS的记录将最终出现在一个分片上,而具有InventoryOnHand的记录将出现在另一个分片上。
然而,似乎所有两个较大的分片键的记录最终都会出现在主分片上。
以下是我的分片状态文本(为了清晰起见,删除了其他集合):
我有两个分片、一个mongos实例和一个配置服务器,如下所示:
Machine A - 10.0.44.16 - 配置服务器,mongos Machine B - 10.0.44.10 - 分片1 Machine C - 10.0.44.11 - 分片2
我有一个名为“Seeds”的集合,其中包含一个分片键“SeedType”,这是该集合中每个文档都有的字段,并包含四个值之一(请查看下面的分片状态)。其中两个值比另外两个值要多得多(其中两个值分别有784,000条记录,而另外两个值大约有5,000条记录)。
我期望看到的行为是,“Seeds”集合中具有InventoryPOS的记录将最终出现在一个分片上,而具有InventoryOnHand的记录将出现在另一个分片上。
然而,似乎所有两个较大的分片键的记录最终都会出现在主分片上。
以下是我的分片状态文本(为了清晰起见,删除了其他集合):
---分片状态--- 分片版本: { "_id" : 1, "version" : 3 } 分片: { "_id" : "shard0000", "host" : "10.44.0.11:27019" } { "_id" : "shard0001", "host" : "10.44.0.10:27017" } 数据库: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "TimMulti", "partitioned" : true, "primary" : "shard0001" } TimMulti.Seeds块: { "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