Я использую mongodb v3.0 и пытаюсь сделать осколки с мечеными осколками. Документация mongodb v3.0 documentation показывает, как ее настроить.MongoDB хранит данные только для первичного осколка в случае выбора пометки осколка ключа
У меня 2 осколка:
mongos> sh.addShardTag("shard0000", "USA")
mongos> sh.addShardTag("shard0001", "EU")
и коллекция для сегментирование является test_collection:
mongos> db.printShardingStatus()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 3,
"minCompatibleVersion" : 3,
"currentVersion" : 4,
"clusterId" : ObjectId("555df7f4f6506e6ba07e1f20")
}
shards:
{ "_id" : "shard0000", "host" : "127.0.0.1:27017", "tags" : [ "USA" ] }
{ "_id" : "shard0001", "host" : "127.0.0.1:27018", "tags" : [ "EU" ] }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test_collection", "partitioned" : true, "primary" : "shard0000" }
Как вы можете видеть, в этом случае он выбирает shard0000 как первичный. Когда я меченый сбор и включен сбором за шардинг:
mongos> sh.addTagRange("test_collection.items", {country: "USA"}, {country: "USA"}, "USA")
mongos> sh.addTagRange("test_collection.items", {country: "EU"}, {country: "EU"}, "EU")
mongos> db.runCommand({shardCollection: "test_collection.items", key: {"_id": "hashed"}})
и вставленные данные (около 20K элементов), я проверил Статус
mongos> db.printShardingStatus()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 3,
"minCompatibleVersion" : 3,
"currentVersion" : 4,
"clusterId" : ObjectId("555df7f4f6506e6ba07e1f20")
}
shards:
{ "_id" : "shard0000", "host" : "127.0.0.1:27017", "tags" : [ "USA" ] }
{ "_id" : "shard0001", "host" : "127.0.0.1:27018", "tags" : [ "EU" ] }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test_collection", "partitioned" : true, "primary" : "shard0000" }
test_collection.items
shard key: { "_id" : "hashed" }
chunks:
shard0000 1
{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 0)
tag: EU { "country" : "EU" } -->> { "country" : "EU" }
tag: USA { "country" : "USA" } -->> { "country" : "USA" }
Таким образом, было применен шард теги, но данные были написаны только для первичного осколка.
Каждый шаг, который я сделал в соответствии с руководством, так может кто-нибудь скажет мне, что я пропустил в конфигурации? Такое же поведение проявляется только в случае выбора меток осколков. Без меток, например. только с помощью ключа осколка он работает правильно и данные хранятся в обоих осколках.