将JSON文件导入到mongos

时间:2016-08-14 20:05:48

标签: json mongodb sharding mongoimport

我在MongoDB中模拟分片。已配置分片群集,并且我在通过网络连接的三台不同物理机器上有三个分片。

shard1,shard 2,shard 3

我连接到mongos并在创建的数据库上创建了一个数据库,一个集合并启用了分片。

现在我需要插入一个大型数据集,这样我就可以对集合进行分片。 我正在使用emailVerificationTokenSchema.post('save', function(error, doc, next) { if (error.name === 'MongoError' && error.code === 11000) { next(new Error('email must be unique')); } else { next(error); } }); ,如下所示。 command line

我的问题是该数据集正被导入到主机上的本地数据库中。例如。如果我将mongo shell连接到mongod我可以看到新数据库有XX.GB但我连接到配置服务器有mongos但是当我在mongos上运行mongoimport时我看到了00.GB创建了数据库。

2 个答案:

答案 0 :(得分:3)

您必须通过--host参数针对mongoimport实例发出mongos,以便路由服务可以将数据正确地分发到分片

答案 1 :(得分: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. 提供以下命令。

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

    此命令告诉mongodb数据库“sharddb”已启用分片。

    1. 现在指定需要分片的集合和密钥。
    2. > 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 ..