<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          mongodb副本集添加節(jié)點

          共 10022字,需瀏覽 21分鐘

           ·

          2021-12-16 10:20

          點擊上方藍(lán)字關(guān)注我

          mongodb副本集架構(gòu)運行一段時間后如果業(yè)務(wù)發(fā)展需要新增新的成員,或者遷移集群,則可以參考本文處理

          1.? 準(zhǔn)備工作

          有一套mongodb 副本集的集群,部署方式參考 mongodb 4.0副本集搭建

          準(zhǔn)備一個新節(jié)點,使用和原副本集版本一致的mongodb

          拷貝原副本集中的配置文件、keyfile文件,并注意修改keyfile文件的權(quán)限(600)

          節(jié)點
          角色
          192.168.56.199:27017PRIMARY
          192.168.56.198:27018
          SECONDARY
          192.168.56.199:27018
          ARBITER

          準(zhǔn)備加入的新節(jié)點: 192.168.56.197:27017

          2.? 添加節(jié)點

          2.1 啟動新節(jié)點

          例如,原節(jié)點的版本是4.2.8,新節(jié)點版本一致,路徑一致然后啟動新節(jié)點

          /usr/local/mongodb/bin/mongod -f /data/mongodb/27017/etc/mongodb.conf

          2.2 主庫上查看當(dāng)前節(jié)點及配置信息

          使用rs.config()查看配置信息

          test12:PRIMARY> rs.config(){  "_id" : "test12",  "version" : 1,  "protocolVersion" : NumberLong(1),  "writeConcernMajorityJournalDefault" : true,  "members" : [    {      "_id" : 0,      "host" : "192.168.56.198:27017",      "arbiterOnly" : false,      "buildIndexes" : true,      "hidden" : false,      "priority" : 1,      "tags" : {
          }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 1, "host" : "192.168.56.199:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : {
          }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 2, "host" : "192.168.56.199:27018", "arbiterOnly" : true, "buildIndexes" : true, "hidden" : false, "priority" : 0, "tags" : {
          }, "slaveDelay" : NumberLong(0), "votes" : 1 } ], "settings" : { "chainingAllowed" : true, "heartbeatIntervalMillis" : 2000, "heartbeatTimeoutSecs" : 10, "electionTimeoutMillis" : 10000, "catchUpTimeoutMillis" : -1, "catchUpTakeoverDelayMillis" : 30000, "getLastErrorModes" : {
          }, "getLastErrorDefaults" : { "w" : 1, "wtimeout" : 0 }, "replicaSetId" : ObjectId("61b86af0a21015e69623e18d") }}
          rs.status() 查看狀態(tài)信息
          test12:PRIMARY> rs.status(){  "set" : "test12",  "date" : ISODate("2021-12-14T10:07:46.561Z"),  "myState" : 1,  "term" : NumberLong(1),  "syncingTo" : "",  "syncSourceHost" : "",  "syncSourceId" : -1,  "heartbeatIntervalMillis" : NumberLong(2000),  "majorityVoteCount" : 2,  "writeMajorityCount" : 2,  "optimes" : {    "lastCommittedOpTime" : {      "ts" : Timestamp(1639476462, 1),      "t" : NumberLong(1)    },    "lastCommittedWallTime" : ISODate("2021-12-14T10:07:42.560Z"),    "readConcernMajorityOpTime" : {      "ts" : Timestamp(1639476462, 1),      "t" : NumberLong(1)    },    "readConcernMajorityWallTime" : ISODate("2021-12-14T10:07:42.560Z"),    "appliedOpTime" : {      "ts" : Timestamp(1639476462, 1),      "t" : NumberLong(1)    },    "durableOpTime" : {      "ts" : Timestamp(1639476462, 1),      "t" : NumberLong(1)    },    "lastAppliedWallTime" : ISODate("2021-12-14T10:07:42.560Z"),    "lastDurableWallTime" : ISODate("2021-12-14T10:07:42.560Z")  },  "lastStableRecoveryTimestamp" : Timestamp(1639476442, 1),  "lastStableCheckpointTimestamp" : Timestamp(1639476442, 1),  "electionCandidateMetrics" : {    "lastElectionReason" : "electionTimeout",    "lastElectionDate" : ISODate("2021-12-14T09:59:22.407Z"),    "electionTerm" : NumberLong(1),    "lastCommittedOpTimeAtElection" : {      "ts" : Timestamp(0, 0),      "t" : NumberLong(-1)    },    "lastSeenOpTimeAtElection" : {      "ts" : Timestamp(1639475952, 1),      "t" : NumberLong(-1)    },    "numVotesNeeded" : 2,    "priorityAtElection" : 1,    "electionTimeoutMillis" : NumberLong(10000),    "numCatchUpOps" : NumberLong(0),    "newTermStartDate" : ISODate("2021-12-14T09:59:22.431Z"),    "wMajorityWriteAvailabilityDate" : ISODate("2021-12-14T09:59:23.493Z")  },  "members" : [    {      "_id" : 0,      "name" : "192.168.56.198:27017",      "health" : 1,      "state" : 2,      "stateStr" : "SECONDARY",      "uptime" : 514,      "optime" : {        "ts" : Timestamp(1639476462, 1),        "t" : NumberLong(1)      },      "optimeDurable" : {        "ts" : Timestamp(1639476462, 1),        "t" : NumberLong(1)      },      "optimeDate" : ISODate("2021-12-14T10:07:42Z"),      "optimeDurableDate" : ISODate("2021-12-14T10:07:42Z"),      "lastHeartbeat" : ISODate("2021-12-14T10:07:45.153Z"),      "lastHeartbeatRecv" : ISODate("2021-12-14T10:07:46.542Z"),      "pingMs" : NumberLong(1),      "lastHeartbeatMessage" : "",      "syncingTo" : "192.168.56.199:27017",      "syncSourceHost" : "192.168.56.199:27017",      "syncSourceId" : 1,      "infoMessage" : "",      "configVersion" : 1    },    {      "_id" : 1,      "name" : "192.168.56.199:27017",      "health" : 1,      "state" : 1,      "stateStr" : "PRIMARY",      "uptime" : 1001,      "optime" : {        "ts" : Timestamp(1639476462, 1),        "t" : NumberLong(1)      },      "optimeDate" : ISODate("2021-12-14T10:07:42Z"),      "syncingTo" : "",      "syncSourceHost" : "",      "syncSourceId" : -1,      "infoMessage" : "",      "electionTime" : Timestamp(1639475962, 1),      "electionDate" : ISODate("2021-12-14T09:59:22Z"),      "configVersion" : 1,      "self" : true,      "lastHeartbeatMessage" : ""    },    {      "_id" : 2,      "name" : "192.168.56.199:27018",      "health" : 1,      "state" : 7,      "stateStr" : "ARBITER",      "uptime" : 514,      "lastHeartbeat" : ISODate("2021-12-14T10:07:44.896Z"),      "lastHeartbeatRecv" : ISODate("2021-12-14T10:07:44.896Z"),      "pingMs" : NumberLong(0),      "lastHeartbeatMessage" : "",      "syncingTo" : "",      "syncSourceHost" : "",      "syncSourceId" : -1,      "infoMessage" : "",      "configVersion" : 1    }  ],  "ok" : 1,  "$clusterTime" : {    "clusterTime" : Timestamp(1639476462, 1),    "signature" : {      "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),      "keyId" : NumberLong(0)    }  },  "operationTime" : Timestamp(1639476462, 1)}

          2.3? 將新節(jié)點添加至集群

          在主庫上執(zhí)行rs.add()將新節(jié)點添加進(jìn)集群中

          生產(chǎn)環(huán)境添加節(jié)點時,建議將priority及votes設(shè)為0,即不會選為主(priority默認(rèn)1),也沒有投票特性(votes默認(rèn)1,有投票權(quán))

          test12:PRIMARY>?rs.add(?{?host:?"192.168.56.197:27017",?priority:?0,?votes:?0?}?){  "ok" : 1,  "$clusterTime" : {    "clusterTime" : Timestamp(1639476997, 1),    "signature" : {      "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),      "keyId" : NumberLong(0)    }  },  "operationTime" : Timestamp(1639476997, 1)}

          另外,生產(chǎn)環(huán)境是從主庫拉取全量數(shù)據(jù),如果數(shù)據(jù)量較大,則需要觀察主庫的壓力及對線上業(yè)務(wù)的影響。

          同步數(shù)據(jù)的過程中,新節(jié)點的狀態(tài)stateStr 為STARTUP2,待同步完成后會變?yōu)镾ECONDARY。

          2.4? 重置新節(jié)點的屬性

          此時再用rs.config()查看新節(jié)點狀態(tài),priority及votes是之前設(shè)的0,可以使用 rs.recofig()命令進(jìn)行調(diào)整

          test12:PRIMARY> rs.config(){  "_id" : "test12",  "version" : 2,  "protocolVersion" : NumberLong(1),  "writeConcernMajorityJournalDefault" : true,  "members" : [    {      "_id" : 0,      "host" : "192.168.56.198:27017",      "arbiterOnly" : false,      "buildIndexes" : true,      "hidden" : false,      "priority" : 1,      "tags" : {              },      "slaveDelay" : NumberLong(0),      "votes" : 1    },    {      "_id" : 1,      "host" : "192.168.56.199:27017",      "arbiterOnly" : false,      "buildIndexes" : true,      "hidden" : false,      "priority" : 1,      "tags" : {              },      "slaveDelay" : NumberLong(0),      "votes" : 1    },    {      "_id" : 2,      "host" : "192.168.56.199:27018",      "arbiterOnly" : true,      "buildIndexes" : true,      "hidden" : false,      "priority" : 0,      "tags" : {              },      "slaveDelay" : NumberLong(0),      "votes" : 1    },    {      "_id" : 3,      "host" : "192.168.56.197:27017",      "arbiterOnly" : false,      "buildIndexes" : true,      "hidden" : false,      "priority" : 0,      "tags" : {              },      "slaveDelay" : NumberLong(0),      "votes" : 0    }  ],  "settings" : {    "chainingAllowed" : true,    "heartbeatIntervalMillis" : 2000,    "heartbeatTimeoutSecs" : 10,    "electionTimeoutMillis" : 10000,    "catchUpTimeoutMillis" : -1,    "catchUpTakeoverDelayMillis" : 30000,    "getLastErrorModes" : {          },    "getLastErrorDefaults" : {      "w" : 1,      "wtimeout" : 0    },    "replicaSetId" : ObjectId("61b86af0a21015e69623e18d")  }}

          從上面可以看到新節(jié)點的id為3 ,則可以通過如下命令調(diào)整對應(yīng)的屬性

          var cfg = rs.conf()cfg.members[3].priority = 1cfg.members[3].votes = 1rs.reconfig(cfg)

          調(diào)整后再查看,屬性已調(diào)整

          test12:PRIMARY> rs.config(){  "_id" : "test12",  "version" : 3,  "protocolVersion" : NumberLong(1),  "writeConcernMajorityJournalDefault" : true,  "members" : [    {      "_id" : 0,      "host" : "192.168.56.198:27017",      "arbiterOnly" : false,      "buildIndexes" : true,      "hidden" : false,      "priority" : 1,      "tags" : {              },      "slaveDelay" : NumberLong(0),      "votes" : 1    },    {      "_id" : 1,      "host" : "192.168.56.199:27017",      "arbiterOnly" : false,      "buildIndexes" : true,      "hidden" : false,      "priority" : 1,      "tags" : {              },      "slaveDelay" : NumberLong(0),      "votes" : 1    },    {      "_id" : 2,      "host" : "192.168.56.199:27018",      "arbiterOnly" : true,      "buildIndexes" : true,      "hidden" : false,      "priority" : 0,      "tags" : {              },      "slaveDelay" : NumberLong(0),      "votes" : 1    },    {      "_id" : 3,      "host" : "192.168.56.197:27017",      "arbiterOnly" : false,      "buildIndexes" : true,      "hidden" : false,      "priority" : 1,      "tags" : {              },      "slaveDelay" : NumberLong(0),      "votes" : 1    }  ],  "settings" : {    "chainingAllowed" : true,    "heartbeatIntervalMillis" : 2000,    "heartbeatTimeoutSecs" : 10,    "electionTimeoutMillis" : 10000,    "catchUpTimeoutMillis" : -1,    "catchUpTakeoverDelayMillis" : 30000,    "getLastErrorModes" : {          },    "getLastErrorDefaults" : {      "w" : 1,      "wtimeout" : 0    },    "replicaSetId" : ObjectId("61b86af0a21015e69623e18d")  }}

          至此,新節(jié)點便加入了副本集中

          3. 注意點總結(jié)

          • 一個副本集,最多可以擁有50個secondary,最多可以有7個投票成員,在副本集里面添加一個新成員,如果之前副本集已經(jīng)有了7個成員,那么可以設(shè)置成非投票成員,或者你從移除之前一個投票成員出來

          • 新節(jié)點的版本、配置建議與原集群一致

          • 注意添加新節(jié)點前確定網(wǎng)絡(luò)互通

          • 如果集群數(shù)據(jù)量較大,則選擇業(yè)務(wù)低峰期添加節(jié)點,并觀察壓力情況

          • 新節(jié)點加入時建議將priority及votes設(shè)為0



          往期精彩回顧

          1.??MySQL高可用之MHA集群部署

          2.??mysql8.0新增用戶及加密規(guī)則修改的那些事

          3.? 比hive快10倍的大數(shù)據(jù)查詢利器-- presto

          4. ?監(jiān)控利器出鞘:Prometheus+Grafana監(jiān)控MySQL、Redis數(shù)據(jù)庫

          5.? PostgreSQL主從復(fù)制--物理復(fù)制

          6.??MySQL傳統(tǒng)點位復(fù)制在線轉(zhuǎn)為GTID模式復(fù)制

          7.??MySQL敏感數(shù)據(jù)加密及解密

          8.??MySQL數(shù)據(jù)備份及還原(一)

          9.??MySQL數(shù)據(jù)備份及還原(二)

          掃碼關(guān)注?????






          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青艹青青啪 | 国产v日韩 | 日韩电影中文字幕一级黄片 | 91精品在线播放 | 三级片在线麻豆 |