Mongodb主從模式SECONDARY提高爲PRIMARY

生產環境不建議僅使用PRIMARY-SECONDARY模式mongodb

當primary掛掉,而且沒法恢復時,能夠把secondary提高爲主節點。數組

注意:此時從節點可能有部分數據未同步過來,部分數據可能丟失。ui

一、在secondary節點刪除掛掉的primary節點code

使用rs.conf查看當前配置get

c = rs.conf()

輸出內容:同步

{
    "_id" : "rd_repl",
    "version" : 133334,
    "protocolVersion" : NumberLong(1),
    "members" : [
        {
            "_id" : 1,
            "host" : "10.0.0.1:2717",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 3,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 2,
            "host" : "10.0.0.2:2717",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 4,
            "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("5ba492935fb60fd88fcab516")
    }
}

好比要刪除members第一個節點:it

{
            "_id" : 1,
            "host" : "10.0.0.1:2717",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 3,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        }

執行mongodb的命令:io

c = rs.conf()
c.members.splice(0,1)
# splice的第一個參數表示要刪除的數組元素的下標

二、從新配置mongoast

rs.reconfig(c, {"force":true})
# c就是上面修改後的配置,加force參數是由於secondary默認沒有執行此命令的權限
相關文章
相關標籤/搜索