我的MongoDB有点问题。这是我的配置:
mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" : ObjectId("546f2d9c37d2895f3b8f9ec1")
}
shards:
{ "_id" : "site_A_shard_1", "host" : "site_A_shard_1/<HOST1>:27510,<HOST2>:27511", "tags" : [ "site_A" ] }
{ "_id" : "site_A_shard_2", "host" : "site_A_shard_2/<HOST2>:27521,<HOST1>:27520", "tags" : [ "site_A" ] }
{ "_id" : "site_B_shard_1", "host" : "site_B_shard_1/<HOST3>:27510,<HOST4>:27511", "tags" : [ "site_B" ] }
{ "_id" : "site_B_shard_2", "host" : "site_B_shard_2/<HOST4>:27521,<HOST3>:27520", "tags" : [ "site_B" ] }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : false, "primary" : "site_B_shard_1" }
{ "_id" : "ocs", "partitioned" : true, "primary" : "site_B_shard_1" }
ocs.adrs_queue
shard key: { "shard.target" : 1, "shard.key" : 1 }
{ "shard.target" : { "$minKey" : 1 }, "shard.key" : { "$minKey" : 1 } } -->> { "shard.target" : { "$maxKey" : 1 }, "shard.key" : { "$maxKey" : 1 } } on : site_B_shard_1 Timestamp(1, 0)
tag: site_A { "shard" : { "target" : "siteA", "key" : { "$minKey" : 1 } } } -->> { "shard" : { "target" : "siteA", "key" : { "$maxKey" : 1 } } }
tag: site_B { "shard" : { "target" : "siteB", "key" : { "$minKey" : 1 } } } -->> { "shard" : { "target" : "siteB", "key" : { "$maxKey" : 1 } } }
ocs.ldrs
shard key: { "shard.target" : 1, "shard.key" : 1 }
{ "shard.target" : { "$minKey" : 1 }, "shard.key" : { "$minKey" : 1 } } -->> { "shard.target" : { "$maxKey" : 1 }, "shard.key" : { "$maxKey" : 1 } } on : site_B_shard_1 Timestamp(1, 0)
tag: site_A { "shard" : { "target" : "siteA", "key" : { "$minKey" : 1 } } } -->> { "shard" : { "target" : "siteA", "key" : { "$maxKey" : 1 } } }
tag: site_B { "shard" : { "target" : "siteB", "key" : { "$minKey" : 1 } } } -->> { "shard" : { "target" : "siteB", "key" : { "$maxKey" : 1 } } }
ocs.notifs_queue
shard key: { "shard.target" : 1, "shard.key" : 1 }
{ "shard.target" : { "$minKey" : 1 }, "shard.key" : { "$minKey" : 1 } } -->> { "shard.target" : { "$maxKey" : 1 }, "shard.key" : { "$maxKey" : 1 } } on : site_B_shard_1 Timestamp(1, 0)
tag: site_A { "shard" : { "target" : "siteA", "key" : { "$minKey" : 1 } } } -->> { "shard" : { "target" : "siteA", "key" : { "$maxKey" : 1 } } }
tag: site_B { "shard" : { "target" : "siteB", "key" : { "$minKey" : 1 } } } -->> { "shard" : { "target" : "siteB", "key" : { "$maxKey" : 1 } } }
ocs.ss_queue
shard key: { "shard.target" : 1, "shard.key" : 1 }
{ "shard.target" : { "$minKey" : 1 }, "shard.key" : { "$minKey" : 1 } } -->> { "shard.target" : { "$maxKey" : 1 }, "shard.key" : { "$maxKey" : 1 } } on : site_B_shard_1 Timestamp(1, 0)
tag: site_A { "shard" : { "target" : "siteA", "key" : { "$minKey" : 1 } } } -->> { "shard" : { "target" : "siteA", "key" : { "$maxKey" : 1 } } }
tag: site_B { "shard" : { "target" : "siteB", "key" : { "$minKey" : 1 } } } -->> { "shard" : { "target" : "siteB", "key" : { "$maxKey" : 1 } } }在配置标记范围时,它似乎不起作用。每次我尝试插入一些信息时,它都会存储在同一个碎片(site_B_shard_1)中,即使相关的标记是site_A。
我做错了什么?
发布于 2014-11-24 13:22:51
看起来,您试图跨两个碎片分发单个集合,但定义了重叠的碎片标签范围,其中site_A和site_B包含整个shard.target键值(minkey .. maxkey):
tag: site_A {
"shard" : {
"target" : "siteA",
"key" : { "$minKey" : 1 }
}
} -->> {
"shard" : {
"target" : "siteA",
"key" : { "$maxKey" : 1 }
}
}
tag: site_B {
"shard" : {
"target" : "siteB",
"key" : { "$minKey" : 1 }
}
} -->> {
"shard" : {
"target" : "siteB",
"key" : { "$maxKey" : 1 }
}
}如果要使用标记感知切分在集合中分发数据,则需要定义范围,其中下限是包含的,上限是独占的,例如:
sh.addTagRange('ocs.adrs_queue',{"shard.target":MinKey},{"shard.target":"site_A"},'site_A') sh.addTagRange('ocs.adrs_queue',{"shard.target":"site_A"},{"shard.target":"site_B"},'site_A') sh.addTagRange('ocs.adrs_queue',{"shard.target":"site_B"},{"shard.target":MaxKey},'site_B')
在这一设置中:
shard.target值的site_A和site_B的文档分发到匹配的碎片中shard.target值小于site_A的文档也将在site_A碎片上分发。shard.target值大于site_B的文档将在site_B碎片上分发有关标记感知切分和多数据中心部署的更多示例,请参见:
https://stackoverflow.com/questions/27104601
复制相似问题