MongoDB 副本集切換方法


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

    這個命令會將primary降級為Secondary節點

    登陸primary節點

[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

   通過 help 幫助查看各種命令

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.

    將primary降級為Secondary節點

shard1:PRIMARY> rs.stepDown() 

   這個命令會讓primary降級為Secondary節點並維持30S,如果這段時間沒有新的primary選舉出來,這個節點重新加入進行選舉

shard1:PRIMARY> rs.stepDown(30)

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")
    }
}

    查看當前配置,存入config變量中

shard1:PRIMARY> config=rs.conf() 

    修改config變量,將第三組端口為4777的成員優先級設置為3

hard1:PRIMARY> config.members[2].priority = 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")
    }..
    ...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM