MongoDB修改Replica Set的服務器名和端口

---恢復內容開始---mongodb

也是閒的蛋疼,原本用27017/27018/27019三個端口啓動了Replica Set,但是回頭一想,這個和默認端口重了,仍是改爲別的吧。因而想改爲40001/40002/40003,折騰一圈發現仍是得看官方文檔,就順便在這裏作個記錄吧shell

先祭出官方連接數據庫

https://docs.mongodb.com/manual/tutorial/change-hostnames-in-a-replica-set/bash

 

操做步驟:ui

1. 中止全部複製集中的實例blog

2. 使用其餘端口,去掉--replSet選項,啓動mongo實例。--dbpath仍然使用以前的設置ip

更改端口是爲了不在變動期間有客戶端鏈接進來文檔

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鏈接到新端口get

mongo --port 37017

4. 修改replica set的配置。配置信息保存在local數據庫的system.replset數據集中,這個配置也是system.replset數據集中惟一的一份文檔。將replica set的配置修改成新的hostname和port。我用了3個實例作集羣,因此須要指定3個host信息it

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")
        }
}

  

搞定

相關文章
相關標籤/搜索