2016-08-14 147 views
2

我正在模拟MongoDB中的分片。分片群集已配置好,并且我在通过网络连接的三台不同物理机器上有三个分片。将json文件导入mongos

shard1,碎片2,分片3

我连接到mongos和创建的数据库,收集并启用分片所创建的数据库。

现在我需要插入一个大型的数据集,这样我可以分割集合。 我使用mongoimport如下。 command line

我的问题是这个数据集被导入到主机上的本地数据库。例如。如果我将mongo外壳连接到mongod,我可以看到新的数据库有XX.GB,但我用mongos连接到配置服务器,但是当我在mongos上运行show dbs时,我在创建的数据库中看到00.GB。

回答

3

你必须通过--host参数发出mongoimportmongos实例,以使路由服务可以将数据适当地分配到碎片

+0

请你能告诉我怎样才能做到这一点吧。 – user2307236

+0

因为我读过mongoimport can不能在与mongo或mongos连接时运行 – user2307236

+0

你提到你有一个分片簇,所以你必须有一个'mongos'实例运行它从配置实例中读取以知道如何分片你的收藏 - 这个'mongos'你必须通过'--host'指向你的'mongoimport' cmdline并且有相应的IP/dns名称和端口 – DAXaholic

2

想象一下你的碎片化环境类似下面。有3个碎片,每个碎片有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. 通过mongos连接到任何分片实例。 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作为收集居民区的文件分片集合。

您可以通过

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