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默认没有执行此命令的权限
相关文章
相关标签/搜索