ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MongoDB分片集群之移除分片节点

2021-04-19 18:51:30  阅读:271  来源: 互联网

标签:hdshard4 hdshard2 hdshard3 MongoDB 172.16 NumberLong 移除 id 分片


我们从分片集群里移除hdshard4分片。

查看分片集群状态

mongos> sh.status()
--- Sharding Status --- 
  sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("60545017224c766911a9c440")
  }
  shards:
        {  "_id" : "hdshard1",  "host" : "hdshard1/172.16.254.136:40001,172.16.254.137:40001,172.16.254.138:40001",  "state" : 1 }
        {  "_id" : "hdshard2",  "host" : "hdshard2/172.16.254.136:40002,172.16.254.137:40002,172.16.254.138:40002",  "state" : 1 }
        {  "_id" : "hdshard3",  "host" : "hdshard3/172.16.254.136:40003,172.16.254.137:40003,172.16.254.138:40003",  "state" : 1 }
        {  "_id" : "hdshard4",  "host" : "hdshard4/172.16.254.139:40005,172.16.254.139:40006,172.16.254.139:40007",  "state" : 1 }
  active mongoses:
        "4.2.12" : 3
  autosplit:
        Currently enabled: yes
  balancer:
        Currently enabled:  yes
        Currently running:  no
        Failed balancer rounds in last 5 attempts:  2
        Last reported error:  Could not find host matching read preference { mode: "primary" } for set hdshard4
        Time of Reported error:  Mon Apr 19 2021 17:11:42 GMT+0800 (CST)
        Migration Results for the last 24 hours: 
                289 : Success
                11 : Failed with error 'aborted', from hdshard1 to hdshard4
                14 : Failed with error 'aborted', from hdshard2 to hdshard4
                3 : Failed with error 'aborted', from hdshard3 to hdshard4
  databases:
        {  "_id" : "config",  "primary" : "config",  "partitioned" : true }
                config.system.sessions
                        shard key: { "_id" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                hdshard1    256
                                hdshard2    256
                                hdshard3    256
                                hdshard4    256
                        too many chunks to print, use verbose if you want to force print
        {  "_id" : "db1",  "primary" : "hdshard3",  "partitioned" : true,  "version" : {  "uuid" : UUID("71bb472c-7896-4a31-a77c-e3aaf723be3c"),  "lastMod" : 1 } }
        {  "_id" : "db2",  "primary" : "hdshard4",  "partitioned" : false,  "version" : {  "uuid" : UUID("add90941-a8b1-4c40-94e9-9ccc38d73096"),  "lastMod" : 1 } }
        {  "_id" : "recommend",  "primary" : "hdshard1",  "partitioned" : true,  "version" : {  "uuid" : UUID("cb833b8e-cc4f-4c52-83c3-719aa383bac4"),  "lastMod" : 1 } }
                recommend.rcmd_1_min_tag_mei_rong
                        shard key: { "_id" : "hashed" }
                        unique: false
                        balancing: true
                        chunks:
                                hdshard1    2
                                hdshard2    2
                                hdshard3    2
                                hdshard4    2
                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-6701866976688134138") } on : hdshard4 Timestamp(7, 0) 
                        { "_id" : NumberLong("-6701866976688134138") } -->> { "_id" : NumberLong("-4163240026901542572") } on : hdshard3 Timestamp(3, 0) 
                        { "_id" : NumberLong("-4163240026901542572") } -->> { "_id" : NumberLong("-1616330844721205691") } on : hdshard2 Timestamp(7, 1) 
                        { "_id" : NumberLong("-1616330844721205691") } -->> { "_id" : NumberLong("909129560750995399") } on : hdshard3 Timestamp(5, 0) 
                        { "_id" : NumberLong("909129560750995399") } -->> { "_id" : NumberLong("3449289120186727718") } on : hdshard2 Timestamp(6, 0) 
                        { "_id" : NumberLong("3449289120186727718") } -->> { "_id" : NumberLong("5980358241733552715") } on : hdshard4 Timestamp(8, 0) 
                        { "_id" : NumberLong("5980358241733552715") } -->> { "_id" : NumberLong("8520801504243263436") } on : hdshard1 Timestamp(8, 1) 
                        { "_id" : NumberLong("8520801504243263436") } -->> { "_id" : { "$maxKey" : 1 } } on : hdshard1 Timestamp(1, 7) 
                recommend.rcmd_1_tag_li_liao
                        shard key: { "_id" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                hdshard1    27
                                hdshard2    27
                                hdshard3    27
                                hdshard4    26
                        too many chunks to print, use verbose if you want to force print

查看所有数据的分片状态

mongos> db.databases.find()
{ "_id" : "recommend", "primary" : "hdshard1", "partitioned" : true, "version" : { "uuid" : UUID("cb833b8e-cc4f-4c52-83c3-719aa383bac4"), "lastMod" : 1 } }
{ "_id" : "db1", "primary" : "hdshard3", "partitioned" : true, "version" : { "uuid" : UUID("71bb472c-7896-4a31-a77c-e3aaf723be3c"), "lastMod" : 1 } }
{ "_id" : "db2", "primary" : "hdshard4", "partitioned" : false, "version" : { "uuid" : UUID("add90941-a8b1-4c40-94e9-9ccc38d73096"), "lastMod" : 1 } }

可以看到hdshard4还充当了db2库的primary节点。

删除分片

mongos> use admin
switched to db admin
mongos> db.runCommand( { removeShard: "hdshard4" } )
{
    "msg" : "draining started successfully",
    "state" : "started",
    "shard" : "hdshard4",
    "note" : "you need to drop or movePrimary these databases",
    "dbsToMove" : [
        "db2"
    ],
    "ok" : 1,
    "operationTime" : Timestamp(1618825477, 2),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1618825477, 2),
        "signature" : {
            "hash" : BinData(0,"l0H3goYxmKMOFF1aWq5rCZcdhS8="),
            "keyId" : NumberLong("6941260985399246879")
        }
    }
}

看到提示信息:db2在hdshard4上边,you need to drop or movePrimary these databases。我们先不管先往下做。监控chunks迁移进展。

查看rcmd_1_tag_li_liao分片信息

mongos> db.rcmd_1_tag_li_liao.getShardDistribution()

Shard hdshard1 at hdshard1/172.16.254.136:40001,172.16.254.137:40001,172.16.254.138:40001
 data : 1.14GiB docs : 125924 chunks : 35
 estimated data per chunk : 33.61MiB
 estimated docs per chunk : 3597

Shard hdshard4 at hdshard4/172.16.254.139:40005,172.16.254.139:40006,172.16.254.139:40007
 data : 826.72MiB docs : 92767 chunks : 2
 estimated data per chunk : 413.36MiB
 estimated docs per chunk : 46383

Shard hdshard3 at hdshard3/172.16.254.136:40003,172.16.254.137:40003,172.16.254.138:40003
 data : 1.06GiB docs : 124880 chunks : 35
 estimated data per chunk : 31.28MiB
 estimated docs per chunk : 3568

Shard hdshard2 at hdshard2/172.16.254.136:40002,172.16.254.137:40002,172.16.254.138:40002
 data : 1.06GiB docs : 124879 chunks : 35
 estimated data per chunk : 31.26MiB
 estimated docs per chunk : 3567

Totals
 data : 4.09GiB docs : 468450 chunks : 107
 Shard hdshard1 contains 28.06% data, 26.88% docs in cluster, avg obj size on shard : 9KiB
 Shard hdshard4 contains 19.71% data, 19.8% docs in cluster, avg obj size on shard : 9KiB
 Shard hdshard3 contains 26.11% data, 26.65% docs in cluster, avg obj size on shard : 8KiB
 Shard hdshard2 contains 26.09% data, 26.65% docs in cluster, avg obj size on shard : 8KiB

mongos> 
mongos> 
mongos> 
mongos> 
mongos> db.rcmd_1_tag_li_liao.getShardDistribution()

Shard hdshard2 at hdshard2/172.16.254.136:40002,172.16.254.137:40002,172.16.254.138:40002
 data : 1.06GiB docs : 124879 chunks : 35
 estimated data per chunk : 31.26MiB
 estimated docs per chunk : 3567

Shard hdshard1 at hdshard1/172.16.254.136:40001,172.16.254.137:40001,172.16.254.138:40001
 data : 1.16GiB docs : 127813 chunks : 36
 estimated data per chunk : 33.18MiB
 estimated docs per chunk : 3550

Shard hdshard3 at hdshard3/172.16.254.136:40003,172.16.254.137:40003,172.16.254.138:40003
 data : 1.1GiB docs : 128448 chunks : 36
 estimated data per chunk : 31.36MiB
 estimated docs per chunk : 3568

Totals
 data : 3.33GiB docs : 381140 chunks : 107
 Shard hdshard2 contains 32.01% data, 32.76% docs in cluster, avg obj size on shard : 8KiB
 Shard hdshard1 contains 34.95% data, 33.53% docs in cluster, avg obj size on shard : 9KiB
 Shard hdshard3 contains 33.03% data, 33.7% docs in cluster, avg obj size on shard : 9KiB

可以看到hdshard4已经被移除。

查看分片集状态

mongos> sh.status()
--- Sharding Status --- 
  sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("60545017224c766911a9c440")
  }
  shards:
        {  "_id" : "hdshard1",  "host" : "hdshard1/172.16.254.136:40001,172.16.254.137:40001,172.16.254.138:40001",  "state" : 1 }
        {  "_id" : "hdshard2",  "host" : "hdshard2/172.16.254.136:40002,172.16.254.137:40002,172.16.254.138:40002",  "state" : 1 }
        {  "_id" : "hdshard3",  "host" : "hdshard3/172.16.254.136:40003,172.16.254.137:40003,172.16.254.138:40003",  "state" : 1 }
        {  "_id" : "hdshard4",  "host" : "hdshard4/172.16.254.139:40005,172.16.254.139:40006,172.16.254.139:40007",  "state" : 1,  "draining" : true }
  active mongoses:
        "4.2.12" : 3
  autosplit:
        Currently enabled: yes
  balancer:
        Currently enabled:  yes
        Currently running:  no
        Failed balancer rounds in last 5 attempts:  0
        Migration Results for the last 24 hours: 
                572 : Success
                14 : Failed with error 'aborted', from hdshard2 to hdshard4
                5 : Failed with error 'aborted', from hdshard4 to hdshard2
                1 : Failed with error 'aborted', from hdshard4 to hdshard3
                3 : Failed with error 'aborted', from hdshard4 to hdshard1
                11 : Failed with error 'aborted', from hdshard1 to hdshard4
                3 : Failed with error 'aborted', from hdshard3 to hdshard4
  databases:
        {  "_id" : "config",  "primary" : "config",  "partitioned" : true }
                config.system.sessions
                        shard key: { "_id" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                hdshard1    342
                                hdshard2    341
                                hdshard3    341
                        too many chunks to print, use verbose if you want to force print
        {  "_id" : "db1",  "primary" : "hdshard3",  "partitioned" : true,  "version" : {  "uuid" : UUID("71bb472c-7896-4a31-a77c-e3aaf723be3c"),  "lastMod" : 1 } }
        {  "_id" : "db2",  "primary" : "hdshard4",  "partitioned" : false,  "version" : {  "uuid" : UUID("add90941-a8b1-4c40-94e9-9ccc38d73096"),  "lastMod" : 1 } }
        {  "_id" : "recommend",  "primary" : "hdshard1",  "partitioned" : true,  "version" : {  "uuid" : UUID("cb833b8e-cc4f-4c52-83c3-719aa383bac4"),  "lastMod" : 1 } }
                recommend.rcmd_1_min_tag_mei_rong
                        shard key: { "_id" : "hashed" }
                        unique: false
                        balancing: true
                        chunks:
                                hdshard1    2
                                hdshard2    3
                                hdshard3    3
                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-6701866976688134138") } on : hdshard3 Timestamp(9, 0) 
                        { "_id" : NumberLong("-6701866976688134138") } -->> { "_id" : NumberLong("-4163240026901542572") } on : hdshard3 Timestamp(3, 0) 
                        { "_id" : NumberLong("-4163240026901542572") } -->> { "_id" : NumberLong("-1616330844721205691") } on : hdshard2 Timestamp(7, 1) 
                        { "_id" : NumberLong("-1616330844721205691") } -->> { "_id" : NumberLong("909129560750995399") } on : hdshard3 Timestamp(5, 0) 
                        { "_id" : NumberLong("909129560750995399") } -->> { "_id" : NumberLong("3449289120186727718") } on : hdshard2 Timestamp(6, 0) 
                        { "_id" : NumberLong("3449289120186727718") } -->> { "_id" : NumberLong("5980358241733552715") } on : hdshard2 Timestamp(10, 0) 
                        { "_id" : NumberLong("5980358241733552715") } -->> { "_id" : NumberLong("8520801504243263436") } on : hdshard1 Timestamp(8, 1) 
                        { "_id" : NumberLong("8520801504243263436") } -->> { "_id" : { "$maxKey" : 1 } } on : hdshard1 Timestamp(1, 7) 
                recommend.rcmd_1_tag_li_liao
                        shard key: { "_id" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                hdshard1    36
                                hdshard2    35
                                hdshard3    36
                        too many chunks to print, use verbose if you want to force print

可以看到hdshard4的状态是draining,结合我们移除分片时候的提示,我们现在进行moveprimary。注意是在admin库下。

moveprimary

mongos> use admin
switched to db admin
mongos> db.runCommand({"moveprimary":"db2","to":"hdshard2"})
{
    "ok" : 1,
    "operationTime" : Timestamp(1618828614, 2007),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1618828614, 2007),
        "signature" : {
            "hash" : BinData(0,"v/C6nLIAKa1Fc16/ICGk3N5+dvc="),
            "keyId" : NumberLong("6941260985399246879")
        }
    }
}

查看数据库分片

mongos> db.databases.find()
{ "_id" : "recommend", "primary" : "hdshard1", "partitioned" : true, "version" : { "uuid" : UUID("cb833b8e-cc4f-4c52-83c3-719aa383bac4"), "lastMod" : 1 } }
{ "_id" : "db1", "primary" : "hdshard3", "partitioned" : true, "version" : { "uuid" : UUID("71bb472c-7896-4a31-a77c-e3aaf723be3c"), "lastMod" : 1 } }
{ "_id" : "db2", "primary" : "hdshard2", "partitioned" : false, "version" : { "uuid" : UUID("add90941-a8b1-4c40-94e9-9ccc38d73096"), "lastMod" : 2 } }

可以看到db2已经迁移到hdshard2。

继续删除分片

mongos> use admin
switched to db admin
mongos>  db.runCommand( { removeShard: "hdshard4" } )
{
    "msg" : "removeshard completed successfully",
    "state" : "completed",
    "shard" : "hdshard4",
    "ok" : 1,
    "operationTime" : Timestamp(1618828812, 2),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1618828812, 2),
        "signature" : {
            "hash" : BinData(0,"15Wkccw2xFhMFYWCFaEDXbpSH7E="),
            "keyId" : NumberLong("6941260985399246879")
        }
    }
}

可以看到提示显示:hdshard4移除已经completed。

查看分片集群状态

mongos> sh.status()
--- Sharding Status --- 
  sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("60545017224c766911a9c440")
  }
  shards:
        {  "_id" : "hdshard1",  "host" : "hdshard1/172.16.254.136:40001,172.16.254.137:40001,172.16.254.138:40001",  "state" : 1 }
        {  "_id" : "hdshard2",  "host" : "hdshard2/172.16.254.136:40002,172.16.254.137:40002,172.16.254.138:40002",  "state" : 1 }
        {  "_id" : "hdshard3",  "host" : "hdshard3/172.16.254.136:40003,172.16.254.137:40003,172.16.254.138:40003",  "state" : 1 }
  active mongoses:
        "4.2.12" : 3
  autosplit:
        Currently enabled: yes
  balancer:
        Currently enabled:  yes
        Currently running:  no
        Failed balancer rounds in last 5 attempts:  0
        Migration Results for the last 24 hours: 
                572 : Success
                1 : Failed with error 'aborted', from hdshard4 to hdshard3
                5 : Failed with error 'aborted', from hdshard4 to hdshard2
                14 : Failed with error 'aborted', from hdshard2 to hdshard4
                3 : Failed with error 'aborted', from hdshard3 to hdshard4
                11 : Failed with error 'aborted', from hdshard1 to hdshard4
                3 : Failed with error 'aborted', from hdshard4 to hdshard1
  databases:
        {  "_id" : "config",  "primary" : "config",  "partitioned" : true }
                config.system.sessions
                        shard key: { "_id" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                hdshard1    342
                                hdshard2    341
                                hdshard3    341
                        too many chunks to print, use verbose if you want to force print
        {  "_id" : "db1",  "primary" : "hdshard3",  "partitioned" : true,  "version" : {  "uuid" : UUID("71bb472c-7896-4a31-a77c-e3aaf723be3c"),  "lastMod" : 1 } }
        {  "_id" : "db2",  "primary" : "hdshard2",  "partitioned" : false,  "version" : {  "uuid" : UUID("add90941-a8b1-4c40-94e9-9ccc38d73096"),  "lastMod" : 2 } }
        {  "_id" : "recommend",  "primary" : "hdshard1",  "partitioned" : true,  "version" : {  "uuid" : UUID("cb833b8e-cc4f-4c52-83c3-719aa383bac4"),  "lastMod" : 1 } }
                recommend.rcmd_1_min_tag_mei_rong
                        shard key: { "_id" : "hashed" }
                        unique: false
                        balancing: true
                        chunks:
                                hdshard1    2
                                hdshard2    3
                                hdshard3    3
                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-6701866976688134138") } on : hdshard3 Timestamp(9, 0) 
                        { "_id" : NumberLong("-6701866976688134138") } -->> { "_id" : NumberLong("-4163240026901542572") } on : hdshard3 Timestamp(3, 0) 
                        { "_id" : NumberLong("-4163240026901542572") } -->> { "_id" : NumberLong("-1616330844721205691") } on : hdshard2 Timestamp(7, 1) 
                        { "_id" : NumberLong("-1616330844721205691") } -->> { "_id" : NumberLong("909129560750995399") } on : hdshard3 Timestamp(5, 0) 
                        { "_id" : NumberLong("909129560750995399") } -->> { "_id" : NumberLong("3449289120186727718") } on : hdshard2 Timestamp(6, 0) 
                        { "_id" : NumberLong("3449289120186727718") } -->> { "_id" : NumberLong("5980358241733552715") } on : hdshard2 Timestamp(10, 0) 
                        { "_id" : NumberLong("5980358241733552715") } -->> { "_id" : NumberLong("8520801504243263436") } on : hdshard1 Timestamp(8, 1) 
                        { "_id" : NumberLong("8520801504243263436") } -->> { "_id" : { "$maxKey" : 1 } } on : hdshard1 Timestamp(1, 7) 
                recommend.rcmd_1_tag_li_liao
                        shard key: { "_id" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                hdshard1    36
                                hdshard2    35
                                hdshard3    36
                        too many chunks to print, use verbose if you want to force print

hdshard4的信息已经完全看不到。
注意事项:必须检查分片集群状态,保障要被移除的分片完全移除完毕。

标签:hdshard4,hdshard2,hdshard3,MongoDB,172.16,NumberLong,移除,id,分片
来源: https://blog.51cto.com/u_12592884/2718220

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有