当前位置:Gxlcms > mysql > mongoDBsingledbconverttoreplicaSet

mongoDBsingledbconverttoreplicaSet

时间:2021-07-01 10:21:17 帮助过:25人阅读

mongoDB single db convert to replicaSet 以下以2.0.2为例 : 1. 修改主节点配置 # 其他配置不变 # 增加配置,例如 noauth = true oplogSize = 31280 journal = true journalCommitInterval = 40 2. 重启mongodb mongo 127.0.0.1:4321/admin db.shutdownServe

mongoDB single db convert to replicaSet

以下以2.0.2为例 :

1. 修改主节点配置

# 其他配置不变

# 增加配置,例如

noauth = true

oplogSize = 31280

journal = true

journalCommitInterval = 40

2. 重启mongodb

mongo 127.0.0.1:4321/admin

db.shutdownServer()

# 增加启动项 --replSet=set_name

mongod --replSet=set_name -f mongod.conf

3. 初始化,假如我想让192.168.10.10:4321这个库的优先级比较高,一直处于primary角色.

use admin

rs.initiate({

"_id" : "digoal",

"version" : 1,

"members" : [

{

"_id" : 0,

"host" : "192.168.10.10:4321",

"priority" : 2

}

]

})

4. 新增local.system.profile

如果开启了profile参数,转换成replicaSet后会报错,需要增加system.profile的collection

连接到primary以及slave执行

use local

db.createCollection( "system.profile", {capped:true , size:4000000})

一般需要在所有数据库都创建,所以

show dbs

然后进入库去执行. 如

use test

db.createCollection( "system.profile", {capped:true , size:4000000})

5. 启动SLAVE

mongod --replSet=set_name -f mongod.conf

6. 重新配置主节点rs.conf

use admin

rs.reconfig({

"_id" : "digoal",

"version" : 1,

"members" : [

{

"_id" : 0,

"host" : "192.168.10.10:4321",

"priority" : 2

},

{

"_id" : 1,

"host" : "192.168.10.11:4321"

}

]

})

7. 等待recover完成

8. Slave节点新增local.system.profile

use local

db.createCollection( "system.profile", {capped:true , size:4000000})

9. 新增其他slave

小结, 因为单节点的mongoDB转成replicaSet时需要初始化local数据库,如果local设置得比较大的话可能导致初始化耗时比较长.

因此建议上线的时候就配置成单节点的replicaSet。

看了德哥的打消了我一个顾虑就是,不需要所有replica set配置好,再初始化,只需要单个配置修改,初始化了,从节点可以逐个加进来,重新配置即可。

自己的步骤:

1.登录现有mongodb

db.runCommand("shutdown")或者db._adminrunCommand("shutdown")

2.配置文件修改auth选项:noauth = true

添加key文件,权限400即可,并在配置文件中写入keyFile路径以及replSet,oplogSize到配置文件,或者直接写明参数启动

示例:mongod --replSet rs1/192.168.173.234:20001 --keyFile /mongodb1.8/key/r1 --fork --port 20001 --dbpath /mongodb1.8/data1/ --logpath=/mongodb1.8/RS.log

3.登录其他两个节点,相继启动

在其中一个节点mongo 192.168.173.234:20001/admin

config_rs1 = {_id: 'rs1', members: [

... {_id: 0, host: '192.168.173.234:20001', priority:1}, --成员IP 及端口,priority=1 指PRIMARY

... {_id: 1, host: '1ip:20002'},

... {_id: 2, host: '2ip:20003'}]

... }

rs.initiate(config_rs1);

rs.status()

rs.isMaster()

人气教程排行