我在 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 的“种子”集合中的记录最终会出现在一个分片上,而带有 InventoryOnHand 的记录会出现在另一个分片上。
但是,似乎两个较大的分片键的所有记录最终都在主分片上。
这是我的分片状态文本(为清楚起见,删除了其他集合):
--- 分片状态 --- 分片版本:{“_id”:1,“版本”:3} 碎片: {“_id”:“shard0000”,“主机”:“10.44.0.11:27019”} {“_id”:“shard0001”,“主机”:“10.44.0.10:27017”} 数据库: {“_id”:“admin”,“partitioned”:false,“primary”:“config”} {“_id”:“TimMulti”,“分区”:真,“主”:“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 服务的情况下以原子方式将对象从一个集合传输到另一个集合的最佳方法是什么?
在此先感谢,-蒂姆