具体的修改方法参考:https://docs.mongodb.com/v3.2/tutorial/change-hostnames-in-a-replica-set/
下面以修改集群中的一个分片的一个节点(nodeA)为例来进行说明,其它节点操作类似,假设待修改IP的节点如下
旧主机名 | 新主机名 | 原IP | 新IP |
---|---|---|---|
server | rs13-c407 | 10.22.124.31 | 10.130.140.34 |
优雅的关闭nodeA上的mongod实例
具体方法:
采用mongo连接到分片secondary,停止节点nodeA上的mongod实例
use admin
db.shutdownServer()
修改主机名和IP地址
修改网卡IP地址,具体参考:https://blog.csdn.net/wangkai_123456/article/details/90406901#IP_11
查看网卡名称
ip addr
重启网卡(以网卡名称 ens4f0 为例)
ifdown ens4f0 && ifup ens4f0
修改完nodeA节点的主机名和IP地址后,修改相应的mongod实例对应的配置文件,重启mongod实例。
配置分片
采用mongo连接primary,修改配置
cfg = rs.conf()
rs1:PRIMARY> cfg = rs.conf()
{
"_id" : "rs1",
"version" : 23,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "10.22.124.31:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "rs12-c407:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 3,
"host" : "rs11-j203:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : 60000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("59e57d98c63b5b144f97b769")
}
}
由以上配置信息可知需要修改的是第一个成员的配置,所以修改命令如下
cfg.members[0].host = "rs13-c407:27018"
rs.reconfig(cfg)
修改完成后,查看集群配置
rs.conf()
```shell
rs1:PRIMARY> cfg = rs.conf()
{
"_id" : "rs1",
"version" : 23,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "rs13-c407:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "rs12-c407:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 3,
"host" : "rs11-j203:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : 60000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("59e57d98c63b5b144f97b769")
}
}
至此,修改集群一个分片的一个节点的IP和主机名完成,其它节点的修改类似。