MongoDB 副本集切換方法

haoge0205發表於2020-08-05

MongoDB 副本集切換方法

1、rs.stepDown([stepdownSecs, catchUpSecs])   step down as primary (disconnects)

   操作步驟如下:

   [root@127-0-0-1 conf]# mongo --port 2777

    shard1:PRIMARY> show dbs

    admin   0.000GB

    config  0.000GB

    local   0.001GB

    yoon    0.000GB

    shard1:PRIMARY> rs.help()

rs.status()                                { replSetGetStatus : 1 } checks repl set status

rs.initiate()                              { replSetInitiate : null } initiates set with default settings

rs.initiate(cfg)                           { replSetInitiate : cfg } initiates set with configuration cfg

rs.conf()                                  get the current configuration object from local.system.replset

rs.reconfig(cfg)                           updates the configuration of a running replica set with cfg (disconnects)

rs.add(hostportstr)                        add a new member to the set with default attributes (disconnects)

rs.add(membercfgobj)                       add a new member to the set with extra attributes (disconnects)

rs.addArb(hostportstr)                     add a new member which is arbiterOnly:true (disconnects)

rs.stepDown([stepdownSecs, catchUpSecs])   step down as primary (disconnects)

rs.syncFrom(hostportstr)                   make a secondary sync from the given member

rs.freeze(secs)                            make a node ineligible to become primary for the time specified

rs.remove(hostportstr)                     remove a host from the replica set (disconnects)

rs.slaveOk()                               allow queries on secondary nodes

rs.printReplicationInfo()                  check oplog size and time range

rs.printSlaveReplicationInfo()             check replica set members and replication lag

db.isMaster()                              check who is primary

reconfiguration helpers disconnect from the database so the shell will display

an error, even if the command succeeds.

    shard1:PRIMARY> rs.stepDown()   #這個命令會讓primary降級為Secondary節點

    shard1:PRIMARY> rs.stepDown(30) #這個命令會讓primary降級為Secondary節點並維持30S,如果這段時間沒有新的primary選舉出來,這個節點重新加入進行選舉

2、透過設定優先順序

   A.為了保證資料的一致性,必須先關閉應用的寫服務

   B.提升要升級為primary節點的Secondary節點的優先順序

   操作如下:

   檢視當前配置資訊:

   shard1:PRIMARY> rs.conf()

{

"_id" : "shard1",

"version" : 4,

"protocolVersion" : NumberLong(1),

"writeConcernMajorityJournalDefault" : true,

"members" : [

{

"_id" : 0,

"host" : "127.0.0.1:2777",

"arbiterOnly" : false,

"buildIndexes" : true,

"hidden" : false,

"priority" : 3,

"tags" : {

},

"slaveDelay" : NumberLong(0),

"votes" : 1

},

{

"_id" : 1,

"host" : "127.0.0.1:3777",

"arbiterOnly" : false,

"buildIndexes" : true,

"hidden" : false,

"priority" : 1,

"tags" : {

},

"slaveDelay" : NumberLong(0),

"votes" : 1

},

{

"_id" : 2,

"host" : "127.0.0.1:4777",

"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("5f27de76c8d22581cdeb2f2e")

}

}

     

     shard1:PRIMARY> config=rs.conf()    # 檢視當前配置,存入config變數中

     shard1:PRIMARY> config.members[2].priority = 3   # 修改config變數,將第三組埠為4777的成員優先順序設定為3

     shard1:PRIMARY> rs.reconfig(config)   # 配置生效

     shard1:PRIMARY> db.isMaster()

{

"hosts" : [

"127.0.0.1:2777",

"127.0.0.1:3777",

"127.0.0.1:4777"

],

"setName" : "shard1",

"setVersion" : 7,

"ismaster" : true,

"secondary" : false,

"primary" : "127.0.0.1:4777",    

"me" : "127.0.0.1:4777",

"electionId" : ObjectId("7fffffff0000000000000004"),

"lastWrite" : {

"opTime" : {

"ts" : Timestamp(1596599298, 1),

"t" : NumberLong(4)

},

"lastWriteDate" : ISODate("2020-08-05T03:48:18Z"),

"majorityOpTime" : {

"ts" : Timestamp(1596599298, 1),

"t" : NumberLong(4)

},

"majorityWriteDate" : ISODate("2020-08-05T03:48:18Z")

}..

...


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2709355/,如需轉載,請註明出處,否則將追究法律責任。

相關文章