2016-08-14 5 views
2

Я имитирую sharding в MongoDB. Оверенный кластер настроен, и у меня есть три осколка на трех разных физических машинах, подключенных по сети.Импорт файла JSON в mongos

shard1, осколок 2, осколок 3

Я подключен к mongos и создал базу данных, сбор и позволило шардинга на созданной базе данных.

Теперь мне нужно вставить большой набор данных, чтобы я мог очертить коллекцию. Я использую mongoimport, как показано ниже. command line

Моя проблема заключается в том, что этот набор данных импортируется в локальную базу данных на главной машине. Например. если я подключу оболочку mongo к mongod, я вижу, что новая база данных имеет XX.GB, но я подключаюсь к серверу конфигурации с монго, но когда я запускаю show dbs на монго, я вижу 00.GB в созданной базе данных.

ответ

3

Вы должны выдавать mongoimport против экземпляра mongos с помощью параметра --host так, что служба маршрутизации может надлежащим образом распределить данные по осколкам

+0

Пожалуйста, вы можете показать мне, как я могу сделать это, пожалуйста. – user2307236

+0

Поскольку я читал, что mongoimport can не предназначен для запуска при подключении к mongo или mongos – user2307236

+0

Вы упомянули, что у вас есть осколочный кластер, поэтому вам нужно запустить экземпляр «mongos», который читает из экземпляров конфигурации, чтобы узнать, как обмануть ваша коллекция - и к этому 'mongos' вы должны указать свой' mongoimport' cmdline через '--host' и соответствующее имя IP/dns и порт – DAXaholic

2

Представьте, что ваш sharded среды что-то, как показано ниже. с тремя осколками, и каждый осколок имеет 3 сервера.

shards: 
      { "_id" : "s0", "host" : "s0/localhost:37017,localhost:37018,localhost:37019" } 
      { "_id" : "s1", "host" : "s1/localhost:47018,localhost:47019" } 
      { "_id" : "s2", "host" : "s2/localhost:57017,localhost:57018,localhost:57019" } 
     active mongoses: 
      "3.2.5" : 1 

Теперь, чтобы импортировать json в оштукатуренную среду, выполните следующие шаги.

  1. Подключитесь к любому из набранных экземпляров через монго. mongo --port 47018, это оставит вас в подсказке mongos>.

  2. Дайте следующую команду.

mongos> sh.enableSharding("sharddb"); 
    { "ok" : 1 } 

эта команда говорит MongoDB, что база данных "sharddb" позволяет для сегментирования.

  1. Теперь укажите коллекцию и ключ, который необходимо оформить.
> mongos> sh.shardCollection("sharddb.neighbourhoods",{"_id":1},true) 
> {"collectionsharded" : "sharddb.neighbourhoods", "ok" : 1 } 

После того, как вы определили все детали, сделать команду ниже mongoimport

> C:\Users\yc03ak1>mongoimport --db sharddb --collection 
> "neighbourhoods" --drop --type json --host "localhost:47018" --file 
> "c:\Users\yc03ak1\Desktop\neighborhoods.json" 

> 2016-08-14T15:32:03.087-0700 connected to: localhost:47018 
> 2016-08-14T15:32:03.091-0700 dropping: sharddb.neighbourhoods 
> 2016-08-14T15:32:04.743-0700 imported 195 documents 

это создало бы документы в районах сбора в sharddb как с помощью командной строки сложенные коллекции.

вы можете проверить sharded коллекции от

mongos> sh.status(); 
--- Sharding Status --- 
    sharding version: { 
     "_id" : 1, 
     "minCompatibleVersion" : 5, 
     "currentVersion" : 6, 
     "clusterId" : ObjectId("57a8f3d77ce8ef0f68a210c9") 
} 
    shards: 
     { "_id" : "s0", "host" : "s0/localhost:37017,localhost:37018,localhost:37019" } 
     { "_id" : "s1", "host" : "s1/localhost:47018,localhost:47019" } 
     { "_id" : "s2", "host" : "s2/localhost:57017,localhost:57018,localhost:57019" } 
    active mongoses: 
     "3.2.5" : 1 
    balancer: 
     Currently enabled: yes 
     Currently running: no 
     Failed balancer rounds in last 5 attempts: 5 
     Last reported error: HostUnreachable 
     Time of Reported error: Thu Aug 11 2016 18:02:14 GMT-0700 (Pacific Standard Time) 
     Migration Results for the last 24 hours: 
       No recent migrations 
    databases: 
     { "_id" : "projects", "primary" : "s1", "partitioned" : true } 
       projects.students 
         shard key: { "student_id" : 1 } 
         unique: false 
         balancing: true 
         chunks: 
           s0  1 
           s1  1 
           s2  1 
         { "student_id" : { "$minKey" : 1 } } -->> { "student_id" : 1 } on : s2 Timestamp(3, 0) 
         { "student_id" : 1 } -->> { "student_id" : 25 } on : s1 Timestamp(3, 1) 
         { "student_id" : 25 } -->> { "student_id" : { "$maxKey" : 1 } } on : s0 Timestamp(2, 0) 
     { "_id" : "test", "primary" : "s2", "partitioned" : true } 
       test.zipcodes 
         shard key: { "_id" : 1 } 
         unique: false 
         balancing: true 
         chunks: 
           s2  1 
         { "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : s2 Timestamp(1, 0) 
     { "_id" : "sharddb", "primary" : "s2", "partitioned" : true } 
       sharddb.neighbourhoods 
         shard key: { "_id" : 1 } 
         unique: true 
         balancing: true 
         chunks: 
           s2  1 
         { "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : s2 Timestamp(1, 0) 

mongos> 

HTH ..

+0

я мог ответить на ваши сомнения? @ user2307236 – user641887