Mongodb主从模式SECONDARY提升为PRIMARY

本文详细介绍了在MongoDB中,当主节点(primary)故障且无法恢复时,如何将从节点(secondary)提升为新的主节点的过程。文章通过具体步骤演示了如何在从节点上删除故障的主节点信息,重新配置MongoDB集群,并使用force参数强制应用新配置,确保服务的连续性和数据的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生产环境不建议仅使用PRIMARY-SECONDARY模式

当primary挂掉,并且无法恢复时,可以把secondary提升为主节点。

注意:此时从节点可能有部分数据未同步过来,部分数据可能丢失。

1、在secondary节点删除挂掉的primary节点

使用rs.conf查看当前配置

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第一个节点:

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

执行mongodb的命令:

c = rs.conf()
c.members.splice(0,1)
# splice的第一个参数表示要删除的数组元素的下标

2、重新配置mongo

rs.reconfig(c, {"force":true})
# c就是上面修改后的配置,加force参数是因为secondary默认没有执行此命令的权限

转载于:https://www.cnblogs.com/rabbix/p/9687929.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值