---恢復內容開始---
也是閑的蛋疼,本來用27017/27018/27019三個端口啟動了Replica Set,可是回頭一想,這個和默認端口重了,還是改成別的吧。於是想改成40001/40002/40003,折騰一圈發現還是得看官方文檔,就順便在這里做個記錄吧
先祭出官方鏈接
https://docs.mongodb.com/manual/tutorial/change-hostnames-in-a-replica-set/
操作步驟:
1. 停止所有復制集中的實例
2. 使用其他端口,去掉--replSet選項,啟動mongo實例。--dbpath仍然使用之前的設置
更改端口是為了避免在變更期間有客戶端連接進來
mongod --port 37017 --bind_ip localhost --dbpath /data/mongodb/rs0-0 --smallfiles --oplogSize 128 mongod --port 37018 --bind_ip localhost --dbpath /data/mongodb/rs0-1 --smallfiles --oplogSize 128 mongod --port 37019 --bind_ip localhost --dbpath /data/mongodb/rs0-2 --smallfiles --oplogSize 128
3. 啟動mongo shell連接到新端口
mongo --port 37017
4. 修改replica set的配置。配置信息保存在local數據庫的system.replset數據集中,這個配置也是system.replset數據集中唯一的一份文檔。將replica set的配置修改為新的hostname和port。我用了3個實例做集群,所以需要指定3個host信息
use local
cfg = db.system.replset.findOne({ "_id": "rs0" })
cfg.members[0].host = "localhost:40001"
cfg.members[1].host = "localhost:40002"
cfg.members[2].host = "localhost:40003"
db.system.replset.update( { "_id": "rs0" } , cfg )
5. 重復步驟3-4,分別使用37018/37019修改另外兩個實例的配置
6. 停止所有的mongo實例
7. 使用新的端口啟動mongo集群的實例,需要指定--replSet選項
mongod --replSet rs0 --port 40001 --bind_ip localhost --dbpath /data/mongodb/rs0-0 --smallfiles --oplogSize 128 mongod --replSet rs0 --port 40002 --bind_ip localhost --dbpath /data/mongodb/rs0-1 --smallfiles --oplogSize 128 mongod --replSet rs0 --port 40003 --bind_ip localhost --dbpath /data/mongodb/rs0-2 --smallfiles --oplogSize 128
8. 啟動mongo shell連接到新端口
mongo --port 40001
9. rs.conf()查看目前的配置
rs0:PRIMARY> rs.conf()
{
"_id" : "rs0",
"version" : 1,
"protocolVersion" : NumberLong(1),
"writeConcernMajorityJournalDefault" : true,
"members" : [
{
"_id" : 0,
"host" : "localhost:40001",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "localhost:40002",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "localhost:40003",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"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("5cedfa4e7be20c6138e87316")
}
}
搞定
