У меня проблема с MongoDB sharding. Моя тестовая установка приведена ниже:Не удалось обмануть данные
1. Сервер приложений (1 сервер) -Может работать приложение.
2.MongoS & Router (1 сервер)
3.Two Осколки-Первичный осколок содержит полную БД & Вторичный осколок просто пустым.
Существует коллекция называется «DEMO», который имеет следующие данные, предоставленные
цен ниже"_id" : ObjectId("541c2df0e4b06af824c2c046"),
"country" : "INDIA",
"deviceType" : "manu-laptop",
"osVersion" : "patanahi",
"logtime" : {
"logtime" : ISODate("2014-09-19T13:21:52.596Z"),
"logtimeStr" : "19-09-2014 06:51:52",
"day" : 19,
"month" : 9,
"year" : 2014,
"hour" : 18,
"min" : 51,
"second" : 52
},
"countryId" : "511d0f28c3c4e5cc447c8dac"
Есть две страны -INDIA & КИТАЯ. Я оштрафовал ключ от страны. Команда, которую я использовал, чтобы шард ключ является
db.runCommand({shardcollection:"demo.db",key:{"country" : 1}});
Но когда я запускаю нагрузку на Mongos он сохраняет данные только по первичному осколок и не направляет ее на второй осколок.
Вариант использования следующий: Я хочу сохранить данные ИНДИИ по 1 осколку и данные CHINA на другом осколке. Пожалуйста, помогите.
Установка завершена и работает отлично.
--- Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 3,
"minCompatibleVersion" : 3,
"currentVersion" : 4,
"clusterId" : ObjectId("541bf31a8c554f2e2d4e1ad4")
}
shards:
{ "_id" : "shard0000", "host" : "xx.xx.xx.xx:27017", "tags" : [ "INDIA" ] }
{ "_id" : "shard0001", "host" : "xx.xx.xx.xx:27017", "tags" : [ "USA" ] }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "demo", "partitioned" : true, "primary" : "shard0000" }
demo.device
shard key: { "country" : 1 }
chunks:
shard0001 1
shard0000 1
{ "country" : { "$minKey" : 1 } } -->> { "country" : "INDIA" } on : shard0001 Timestamp(2, 0)
{ "country" : "INDIA" } -->> { "country" : { "$maxKey" : 1 } } on : shard0000 Timestamp(2, 1)
demo.incoming_request_log
shard key: { "regionId" : 1 }
chunks:
shard0001 2
shard0000 3
{ "regionId" : { "$minKey" : 1 } } -->> { "regionId" : 0 } on : shard0001 Timestamp(2, 0)
{ "regionId" : 0 } -->> { "regionId" : 2 } on : shard0000 Timestamp(3, 1)
{ "regionId" : 2 } -->> { "regionId" : "0" } on : shard0000 Timestamp(2, 2)
{ "regionId" : "0" } -->> { "regionId" : "2" } on : shard0000 Timestamp(2, 4)
{ "regionId" : "2" } -->> { "regionId" : { "$maxKey" : 1 } } on : shard0001 Timestamp(3, 0)
tag: INDIA { "regionId" : "0" } -->> { "regionId" : "1" }
tag: USA { "regionId" : "2" } -->> { "regionId" : "3" }
{ "_id" : "demo;", "partitioned" : false, "primary" : "shard0001" }
Yo должен смотреть на тэг, основанный на sharding: http://docs.mongodb.org/manual/core/tag-aware-sharding/ –
please post sh.status() - Я подозреваю, что у вас есть только один кусок, и это еще не расколото. Также следует отметить, что использование поля с двумя значениями является плохим выбором для ключа осколка, у вас может быть только 2 куска (что, если вам нужно 4 осколка для обработки трафика?), И, вероятно, в конечном итоге превысит максимальный размер куска, который имеет свои собственные последствия.Если вы просто хотите разделить запросы/записи на два разных набора данных на разных серверах, почему бы просто не использовать 2 базы данных? –
Adam Comerford - это только для целей тестирования. Внедрение продукта будет отличаться. Для тестирования мне просто нужно маршрутизировать трафик по стране в назначенные осколки. – Rahul