暂无图片
MongoDB节点删除和增加
最近更新:2022-09-05 13:51:17

适用范围

mongodb 4.X

问题概述

mongodb是一个副本架构,在运维中,可能有涉及到节点的增加和删除操作,这里是描述mongodb节点的正常删除和增加。

解决方案

注:这是一个客户的模拟案例,mongodb集群中,3个节点,有个节点需要重新安装,整个过程,涉及到节点的删除和增加。

1. 配置信息:

  主机         IP地址            端口
serv-node1     172.16.0.15      分片端口:27019、27020、27021
                                config端口:27017
                                mongos路由端口:27018
serv-node2     172.18.0.12      分片端口:27019、27020、27021
                                config端口:27017
                                mongos路由端口:27018
serv-node3      172.19.0.2      分片端口:27019、27020、27021
                                config端口:27017
                                mongos路由端口:27018

2. MongoDB通过reconfig实施节点删除和添加

节点删除:

//节点配置:

  {
         "_id" : 0,
         "host" : "serv-node1:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
 
         },
         "slaveDelay" : NumberLong(0),
         "votes" : 1
 },
 {
         "_id" : 1,
         "host" : "serv-node2:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
 
         },
         "slaveDelay" : NumberLong(0),
         "votes" : 1
 },
 {
         "_id" : 2,
         "host" : "serv-node3:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 2,
         "tags" : {
 
         },
         "slaveDelay" : NumberLong(0),
         "votes" : 1
 }

//计划:保留节点2和3,删除节点1

//保留需要的节点配置,包括节点2、3,不要包含节点1的配置:

config = {_id:"configRS", "configsvr":true,members:[{_id:1,host:'serv-node2:27017',priority :1},{_id:2,host:'serv-node3:27017',priority :1}]};   

//使配置生效 :

rs.reconfig(config);  

//查看节点配置:

rs.config(); 

//查看节点状态 :

rs.status(); 

具体操作如下: //确认当前的运行状态: //有3个节点, //节点1:serv-node1:27017 //节点2:serv-node2:27017 //节点3:serv-node3:27017

MongoDB Enterprise configRS:PRIMARY> rs.config()rs.config()
{
        "_id" : "configRS",
        "version" : 2,
        "configsvr" : true,
        "protocolVersion" : NumberLong(1),
        "writeConcernMajorityJournalDefault" : true,
        "members" : [
                {
                        "_id" : 0,
                        "host" : "serv-node1:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {
 
                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 1,
                        "host" : "serv-node2:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {
 
                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 2,
                        "host" : "serv-node3:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 2,
                        "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("5ff56612374f9741a0bfbc6a")
        }
}

//我们保留节点2和节点3,定义好变量config

......