Mongo分片问题

时间:2017-06-14 12:23:00

标签: mongodb sharding

我在MONGOD中使用3个分片服务器(S1,S2,S3)创建了分片, 在S1,S2,S3中启用分片。

**mongos> sh.status()
--- Sharding Status ---
  sharding version: {
        "_id" : 1,
        "minCompatibleVersion" : 5,`enter code here`
        "currentVersion" : 6,
        "clusterId" : ObjectId("592a59b9057c510a56f528e3")
}
  shards:
        {  "_id" : "s1",  "host" : "s1/localhost:37017,localhost:37018,localhost:37019" }
        {  "_id" : "s2",  "host" : "s2/localhost:47017,localhost:47018,localhost:47019" }
        {  "_id" : "s3",  "host" : "s3/localhost:57017,localhost:57018,localhost:57019" }
  active mongoses:
        "3.2.13" : 1
  balancer:
        Currently enabled:  yes
        Currently running:  no
        Failed balancer rounds in last 5 attempts:  0
        Migration Results for the last 24 hours:
                2 : Success
  databases:
        {  "_id" : "school",  "primary" : "s1",  "partitioned" : true }
                school.students
                        shard key: { "student_id" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                s1     1
                        { "student_id" : { "$minKey" : 1 } } -->> { "student_id" : { "$maxKey" : 1 } } on : s1 Timestamp(1, 0)**

上面的代码提到在MONGOS中创建的数据库(学校)是自动与S1共享的。

将数据库学校效果放在其他分片中(S2,S3)?

请帮我验证分片在S1,S2和S3与数据库SCH001之间是否完美运行。

在上面的例子中,如果一组崩溃的数据可用于所有其他集合中的唯一数据,那么重新启动集合将如何工作,具体行为将如何

1 个答案:

答案 0 :(得分:0)

下面是数据库标记如何查找名为“ ShardTestDB.Test”的分片集合之一

databases:
        {  "_id" : "ShardTestDB",  "primary" : "shardrs1",  "partitioned" : true }
                ShardTestDB.Test
                        shard key: { "_id" : "hashed" }
                        unique: false
                        balancing: true
                        chunks:
                                shardrs1    2
                                shardrs2    2
                                shardrs3    2
                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-6148914691236517204") } on : shardrs1 Timestamp(4, 1) 
                        { "_id" : NumberLong("-6148914691236517204") } -->> { "_id" : NumberLong("-3074457345618258602") } on : shardrs1 Timestamp(4, 2) 
                        { "_id" : NumberLong("-3074457345618258602") } -->> { "_id" : NumberLong(0) } on : shardrs2 Timestamp(4, 3) 
                        { "_id" : NumberLong(0) } -->> { "_id" : NumberLong("3074457345618258602") } on : shardrs2 Timestamp(4, 4) 
                        { "_id" : NumberLong("3074457345618258602") } -->> { "_id" : NumberLong("6148914691236517204") } on : shardrs3 Timestamp(4, 5) 
                        { "_id" : NumberLong("6148914691236517204") } -->> { "_id" : { "$maxKey" : 1 } } on : shardrs3 Timestamp(4, 6) 
        {  "_id" : "config",  "primary" : "config",  "partitioned" : true }
                config.system.sessions
                        shard key: { "_id" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                shardrs1    1
                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shardrs1 Timestamp(1, 0) 

通过比较两个输出,似乎“ school.students”集合仅存储在1个copysetSet中,该集合为s1(检查大块下)。因此,如果整个s1plicateSet崩溃,可能会丢失所有数据。但这不太可能。但是,如果copySet中只有1台计算机崩溃,则数据不会丢失,因为copySet中的其他计算机具有相同的数据(如果它们已正确同步)。