mongodb副本集主從切換

前文已有mongodb副本集搭建及添加節(jié)點(diǎn)的記錄
本次進(jìn)行主從切換及刪除節(jié)點(diǎn)的操作。
1. 主從切換
1.1 查詢當(dāng)前節(jié)點(diǎn)信息及狀態(tài)
使用rs.status()命令可以查看到當(dāng)前副本集各節(jié)點(diǎn)信息及角色
| 節(jié)點(diǎn)id | 節(jié)點(diǎn) | 角色 |
| node0 | 192.168.56.198:27017 | PRIMARY |
| node1 | 192.168.56.199:27018 | ARBITER |
| node2 | 192.168.56.197:27017 | SECONDARY |
| node3 | 192.168.56.199:27017 | SECONDARY |
test12:PRIMARY> rs.status(){"set" : "test12","date" : ISODate("2021-12-16T13:45:28.261Z"),"myState" : 1,"term" : NumberLong(3),"syncingTo" : "","syncSourceHost" : "","syncSourceId" : -1,"heartbeatIntervalMillis" : NumberLong(2000),"majorityVoteCount" : 3,"writeMajorityCount" : 3,"optimes" : {"lastCommittedOpTime" : {"ts" : Timestamp(1639662318, 1),"t" : NumberLong(3)},"lastCommittedWallTime" : ISODate("2021-12-16T13:45:18.626Z"),"readConcernMajorityOpTime" : {"ts" : Timestamp(1639662318, 1),"t" : NumberLong(3)},"readConcernMajorityWallTime" : ISODate("2021-12-16T13:45:18.626Z"),"appliedOpTime" : {"ts" : Timestamp(1639662318, 1),"t" : NumberLong(3)},"durableOpTime" : {"ts" : Timestamp(1639662318, 1),"t" : NumberLong(3)},"lastAppliedWallTime" : ISODate("2021-12-16T13:45:18.626Z"),"lastDurableWallTime" : ISODate("2021-12-16T13:45:18.626Z")},"lastStableRecoveryTimestamp" : Timestamp(1639662308, 1),"lastStableCheckpointTimestamp" : Timestamp(1639662308, 1),"electionCandidateMetrics" : {"lastElectionReason" : "priorityTakeover","lastElectionDate" : ISODate("2021-12-14T15:24:57.309Z"),"electionTerm" : NumberLong(3),"lastCommittedOpTimeAtElection" : {"ts" : Timestamp(1639495485, 1),"t" : NumberLong(2)},"lastSeenOpTimeAtElection" : {"ts" : Timestamp(1639495485, 1),"t" : NumberLong(2)},"numVotesNeeded" : 3,"priorityAtElection" : 15,"electionTimeoutMillis" : NumberLong(10000),"priorPrimaryMemberId" : 3,"numCatchUpOps" : NumberLong(0),"newTermStartDate" : ISODate("2021-12-14T15:24:57.321Z"),"wMajorityWriteAvailabilityDate" : ISODate("2021-12-14T15:24:58.285Z")},"electionParticipantMetrics" : {"votedForCandidate" : true,"electionTerm" : NumberLong(2),"lastVoteDate" : ISODate("2021-12-14T10:36:13.063Z"),"electionCandidateMemberId" : 3,"voteReason" : "","lastAppliedOpTimeAtElection" : {"ts" : Timestamp(1639478166, 1),"t" : NumberLong(1)},"maxAppliedOpTimeInSet" : {"ts" : Timestamp(1639478166, 1),"t" : NumberLong(1)},"priorityAtElection" : 1},"members" : [{"_id" : 0,"name" : "192.168.56.198:27017","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 186852,"optime" : {"ts" : Timestamp(1639662318, 1),"t" : NumberLong(3)},"optimeDate" : ISODate("2021-12-16T13:45:18Z"),"syncingTo" : "","syncSourceHost" : "","syncSourceId" : -1,"infoMessage" : "","electionTime" : Timestamp(1639495497, 1),"electionDate" : ISODate("2021-12-14T15:24:57Z"),"configVersion" : 7,"self" : true,"lastHeartbeatMessage" : ""},{??????"_id"?:?1,"name" : "192.168.56.199:27018","health" : 1,"state" : 7,"stateStr" : "ARBITER","uptime" : 186375,"lastHeartbeat" : ISODate("2021-12-16T13:45:27.183Z"),"lastHeartbeatRecv" : ISODate("2021-12-16T13:45:26.984Z"),"pingMs" : NumberLong(0),"lastHeartbeatMessage" : "","syncingTo" : "","syncSourceHost" : "","syncSourceId" : -1,"infoMessage" : "","configVersion" : 7},{??????"_id"?:?2,"name" : "192.168.56.197:27017","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 185329,"optime" : {"ts" : Timestamp(1639662318, 1),"t" : NumberLong(3)},"optimeDurable" : {"ts" : Timestamp(1639662318, 1),"t" : NumberLong(3)},"optimeDate" : ISODate("2021-12-16T13:45:18Z"),"optimeDurableDate" : ISODate("2021-12-16T13:45:18Z"),"lastHeartbeat" : ISODate("2021-12-16T13:45:27.463Z"),"lastHeartbeatRecv" : ISODate("2021-12-16T13:45:26.387Z"),"pingMs" : NumberLong(1),"lastHeartbeatMessage" : "","syncingTo" : "192.168.56.198:27017","syncSourceHost" : "192.168.56.198:27017","syncSourceId" : 0,"infoMessage" : "","configVersion" : 7},{??????"_id"?:?3,"name" : "192.168.56.199:27017","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 12079,"optime" : {"ts" : Timestamp(1639662318, 1),"t" : NumberLong(3)},"optimeDurable" : {"ts" : Timestamp(1639662318, 1),"t" : NumberLong(3)},"optimeDate" : ISODate("2021-12-16T13:45:18Z"),"optimeDurableDate" : ISODate("2021-12-16T13:45:18Z"),"lastHeartbeat" : ISODate("2021-12-16T13:45:28.253Z"),"lastHeartbeatRecv" : ISODate("2021-12-16T13:45:27.555Z"),"pingMs" : NumberLong(0),"lastHeartbeatMessage" : "","syncingTo" : "192.168.56.198:27017","syncSourceHost" : "192.168.56.198:27017","syncSourceId" : 0,"infoMessage" : "","configVersion" : 7}],"ok" : 1,"$clusterTime" : {"clusterTime" : Timestamp(1639662318, 1),"signature" : {"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),"keyId" : NumberLong(0)}},"operationTime" : Timestamp(1639662318, 1)}
1.2 切換主庫
將主庫切換至node3節(jié)點(diǎn),具體步驟為:
? 查看當(dāng)前配置
調(diào)整node3節(jié)點(diǎn)的權(quán)重
重新加載配置
因默認(rèn)情況下,各節(jié)點(diǎn)的權(quán)重都為1,因此可以調(diào)整需要切換為主庫的節(jié)點(diǎn)的權(quán)重為較大的值(建議超過節(jié)點(diǎn)數(shù))
test12:PRIMARY> rs.config(){"_id" : "test12","version" : 9,"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:27018","arbiterOnly" : true,"buildIndexes" : true,"hidden" : false,"priority" : 0,"tags" : {},"slaveDelay" : NumberLong(0),"votes" : 1},{??????"_id"?:?2,"host" : "192.168.56.197:27017","arbiterOnly" : false,"buildIndexes" : true,"hidden" : false,"priority" : 1,"tags" : {},"slaveDelay" : NumberLong(0),"votes" : 1},{??????"_id"?:?3,"host" : "192.168.56.199: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")}}
將node3的節(jié)點(diǎn)的權(quán)重改為10
var cfg = rs.conf()cfg.members[3].priority?=?10
重新加載配置,選主
rs.reconfig(cfg)通常1分鐘內(nèi)完成切換。
PS:也可以通過rs.stepDown()
PRIMARY> rs.stepDown() //rs.stepDown(30) 單位:S2. 剔除節(jié)點(diǎn)
剔除的節(jié)點(diǎn)為SECONDARY或ARBITER,可以執(zhí)行通過rs.remove() 命令剔除對應(yīng)節(jié)點(diǎn),如為PRIMARY節(jié)點(diǎn),則先進(jìn)行主從切換,再剔除。test12:PRIMARY>?rs.remove("192.168.56.199:27018"){"ok" : 1,"$clusterTime" : {"clusterTime" : Timestamp(1639683041, 1),"signature" : {"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),"keyId" : NumberLong(0)}},"operationTime" : Timestamp(1639683041, 1)}

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)點(diǎn)位復(fù)制在線轉(zhuǎn)為GTID模式復(fù)制



評論
圖片
表情
