在生产环境添加分片既添加一个副本集,所以此次测试我们需要新创建一个副本集。副本集创建过程参考文档如下:
https://blog.51cto.com/u_12592884/2698103
hdshard4:PRIMARY> rs.status() { "set" : "hdshard4", "date" : ISODate("2021-04-19T07:38:30.335Z"), "myState" : 1, "term" : NumberLong(2), "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "heartbeatIntervalMillis" : NumberLong(2000), "majorityVoteCount" : 2, "writeMajorityCount" : 2, "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1618817908, 1), "t" : NumberLong(2) }, "lastCommittedWallTime" : ISODate("2021-04-19T07:38:28.435Z"), "readConcernMajorityOpTime" : { "ts" : Timestamp(1618817908, 1), "t" : NumberLong(2) }, "readConcernMajorityWallTime" : ISODate("2021-04-19T07:38:28.435Z"), "appliedOpTime" : { "ts" : Timestamp(1618817908, 1), "t" : NumberLong(2) }, "durableOpTime" : { "ts" : Timestamp(1618817908, 1), "t" : NumberLong(2) }, "lastAppliedWallTime" : ISODate("2021-04-19T07:38:28.435Z"), "lastDurableWallTime" : ISODate("2021-04-19T07:38:28.435Z") }, "lastStableRecoveryTimestamp" : Timestamp(1618817612, 1), "lastStableCheckpointTimestamp" : Timestamp(1618817612, 1), "electionCandidateMetrics" : { "lastElectionReason" : "electionTimeout", "lastElectionDate" : ISODate("2021-04-19T07:37:48.397Z"), "electionTerm" : NumberLong(2), "lastCommittedOpTimeAtElection" : { "ts" : Timestamp(0, 0), "t" : NumberLong(-1) }, "lastSeenOpTimeAtElection" : { "ts" : Timestamp(1618817622, 1), "t" : NumberLong(1) }, "numVotesNeeded" : 2, "priorityAtElection" : 1, "electionTimeoutMillis" : NumberLong(10000), "numCatchUpOps" : NumberLong(0), "newTermStartDate" : ISODate("2021-04-19T07:37:48.423Z"), "wMajorityWriteAvailabilityDate" : ISODate("2021-04-19T07:37:49.230Z") }, "members" : [ { "_id" : 0, "name" : "172.16.254.139:40005", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 55, "optime" : { "ts" : Timestamp(1618817908, 1), "t" : NumberLong(2) }, "optimeDate" : ISODate("2021-04-19T07:38:28Z"), "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "could not find member to sync from", "electionTime" : Timestamp(1618817868, 1), "electionDate" : ISODate("2021-04-19T07:37:48Z"), "configVersion" : 1, "self" : true, "lastHeartbeatMessage" : "" }, { "_id" : 1, "name" : "172.16.254.139:40006", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 46, "optime" : { "ts" : Timestamp(1618817908, 1), "t" : NumberLong(2) }, "optimeDurable" : { "ts" : Timestamp(1618817908, 1), "t" : NumberLong(2) }, "optimeDate" : ISODate("2021-04-19T07:38:28Z"), "optimeDurableDate" : ISODate("2021-04-19T07:38:28Z"), "lastHeartbeat" : ISODate("2021-04-19T07:38:28.466Z"), "lastHeartbeatRecv" : ISODate("2021-04-19T07:38:29.392Z"), "pingMs" : NumberLong(0), "lastHeartbeatMessage" : "", "syncingTo" : "172.16.254.139:40005", "syncSourceHost" : "172.16.254.139:40005", "syncSourceId" : 0, "infoMessage" : "", "configVersion" : 1 }, { "_id" : 2, "name" : "172.16.254.139:40007", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 37, "optime" : { "ts" : Timestamp(1618817908, 1), "t" : NumberLong(2) }, "optimeDurable" : { "ts" : Timestamp(1618817908, 1), "t" : NumberLong(2) }, "optimeDate" : ISODate("2021-04-19T07:38:28Z"), "optimeDurableDate" : ISODate("2021-04-19T07:38:28Z"), "lastHeartbeat" : ISODate("2021-04-19T07:38:28.459Z"), "lastHeartbeatRecv" : ISODate("2021-04-19T07:38:30.049Z"), "pingMs" : NumberLong(0), "lastHeartbeatMessage" : "", "syncingTo" : "172.16.254.139:40006", "syncSourceHost" : "172.16.254.139:40006", "syncSourceId" : 1, "infoMessage" : "", "configVersion" : 1 } ], "ok" : 1 }
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: 5 : Success 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" : "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 3 hdshard2 3 hdshard3 2 { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-6701866976688134138") } on : hdshard2 Timestamp(2, 0) { "_id" : NumberLong("-6701866976688134138") } -->> { "_id" : NumberLong("-4163240026901542572") } on : hdshard3 Timestamp(3, 0) { "_id" : NumberLong("-4163240026901542572") } -->> { "_id" : NumberLong("-1616330844721205691") } on : hdshard2 Timestamp(4, 0) { "_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 : hdshard1 Timestamp(6, 1) { "_id" : NumberLong("5980358241733552715") } -->> { "_id" : NumberLong("8520801504243263436") } on : hdshard1 Timestamp(1, 6) { "_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 36 hdshard3 35 too many chunks to print, use verbose if you want to force print
mongos> sh.getBalancerState() true
mongos> sh.addShard("hdshard4/172.16.254.139:40005,172.16.254.139:40006,172.16.254.139:40007") { "shardAdded" : "hdshard4", "ok" : 1, "operationTime" : Timestamp(1618818723, 4), "$clusterTime" : { "clusterTime" : Timestamp(1618818723, 4), "signature" : { "hash" : BinData(0,"hN7ntKc2IjBueOXTau306Dhm3AU="), "keyId" : NumberLong("6941260985399246879") } } }
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: yes Collections with active migrations: recommend.rcmd_1_min_tag_mei_rong started at Mon Apr 19 2021 15:52:30 GMT+0800 (CST) Failed balancer rounds in last 5 attempts: 0 Migration Results for the last 24 hours: 9 : Success databases: { "_id" : "config", "primary" : "config", "partitioned" : true } config.system.sessions shard key: { "_id" : 1 } unique: false balancing: true chunks: hdshard1 341 hdshard2 341 hdshard3 341 hdshard4 1 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" : "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 3 hdshard2 3 hdshard3 2 { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-6701866976688134138") } on : hdshard2 Timestamp(2, 0) { "_id" : NumberLong("-6701866976688134138") } -->> { "_id" : NumberLong("-4163240026901542572") } on : hdshard3 Timestamp(3, 0) { "_id" : NumberLong("-4163240026901542572") } -->> { "_id" : NumberLong("-1616330844721205691") } on : hdshard2 Timestamp(4, 0) { "_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 : hdshard1 Timestamp(6, 1) { "_id" : NumberLong("5980358241733552715") } -->> { "_id" : NumberLong("8520801504243263436") } on : hdshard1 Timestamp(1, 6) { "_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 34 hdshard2 35 hdshard3 35 hdshard4 3 too many chunks to print, use verbose if you want to force print
可以看到hdshard4分片已经加入到分片集群当中。
mongos> use recommend switched to db recommend 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.16GiB docs : 125816 chunks : 34 estimated data per chunk : 35.22MiB estimated docs per chunk : 3700 Shard hdshard3 at hdshard3/172.16.254.136:40003,172.16.254.137:40003,172.16.254.138:40003 data : 1.06GiB docs : 124879 chunks : 35 estimated data per chunk : 31.08MiB estimated docs per chunk : 3567 Shard hdshard2 at hdshard2/172.16.254.136:40002,172.16.254.137:40002,172.16.254.138:40002 data : 1.08GiB docs : 128448 chunks : 35 estimated data per chunk : 31.87MiB estimated docs per chunk : 3669 Shard hdshard4 at hdshard4/172.16.254.139:40005,172.16.254.139:40006,172.16.254.139:40007 data : 97.06MiB docs : 10704 chunks : 3 estimated data per chunk : 32.35MiB estimated docs per chunk : 3568 Totals data : 3.41GiB docs : 389847 chunks : 107 Shard hdshard1 contains 34.23% data, 32.27% docs in cluster, avg obj size on shard : 9KiB Shard hdshard3 contains 31.1% data, 32.03% docs in cluster, avg obj size on shard : 8KiB Shard hdshard2 contains 31.88% data, 32.94% docs in cluster, avg obj size on shard : 8KiB Shard hdshard4 contains 2.77% data, 2.74% docs in cluster, avg obj size on shard : 9KiB
可以看到此集合已经开始往hdshard4迁移数据。
mongos> sh.isBalancerRunning() true
结果告诉我们balance确实在搬数据。到此分片添加完成,接下来等待漫长的rebalance过程。