使用MongoDB进行分片

时间:2015-07-29 15:30:02

标签: mongodb sharding

我是MongoDB Sharding的新手。我在mongos上创建了config serverxyz.com以及一个分片,在xyzshard.com服务器上创建了第二个分片:

    mongos

  • xyz.com:27019config server

  • xyz.com:27018

  • xyz.com:27017上的第一个分片

  • xyzshard.com:27017上的第二个分片

我的数据库是test,收藏品是test_collection。我已在test.test_collection上启用了分片。

我已使用_id

索引"hash"字段
db.test_collection.ensureIndex( { _id : "hashed" } )

我运行以下命令:

for (var i = 1; i <= 500; i++) 
    db.test_collection.insert( { x : i } )

我得到以下输出:

WriteResult({ "nInserted" : 1 })

但是当我在这两个分片上运行查找查询时:

db.test_collection.find()

我得到每个碎片上的所有文件。

这是正确的方式还是我在哪里出错?

xyz.com上的sh.status()输出

sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("55b8d3e9a8742d49164820b6")
}
  shards:
    {  "_id" : "shard0000",  "host" : "localhost:27017" }
  balancer:
    Currently enabled:  yes
    Currently running:  no
    Failed balancer rounds in last 5 attempts:  0
    Migration Results for the last 24 hours: 
        No recent migrations
  databases:
    {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
    {  "_id" : "test",  "partitioned" : true,  "primary" : "shard0000" }
        test.test_collection
            shard key: { "_id" : "hashed" }
            chunks:
                shard0000   2
            { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong(0) } on : shard0000 Timestamp(1, 1) 
            { "_id" : NumberLong(0) } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 2) 
    {  "_id" : "test_db",  "partitioned" : false,  "primary" : "shard0000" }
    {  "_id" : "db",  "partitioned" : false,  "primary" : "shard0000" } 

xyzshard.com上sh.status()的输出

sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("55b8d3e9a8742d49164820b6")
}
  shards:
    {  "_id" : "shard0000",  "host" : "localhost:27017" }
  databases:
    {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
    {  "_id" : "test",  "partitioned" : true,  "primary" : "shard0000" }
        test.test_collection
            shard key: { "_id" : "hashed" }
            chunks:
                shard0000   2
            { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong(0) } on : shard0000 Timestamp(1, 1) 
            { "_id" : NumberLong(0) } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 2) 
    {  "_id" : "test_db",  "partitioned" : false,  "primary" : "shard0000" }
    {  "_id" : "db",  "partitioned" : false,  "primary" : "shard0000" }

1 个答案:

答案 0 :(得分:0)

您应该连接到您的mongos服务器并在其上插入数据。您可以插入50000条记录用于测试目的。 然后运行sh.status()。

你终于可以看到发行版了。 请记住,您的配置服务器应该正在运行,并且所有分片服务器都连接到mongos服务器。