Home > Database > Mysql Tutorial > mongoDB single db convert to replicaSet

mongoDB single db convert to replicaSet

WBOY
Release: 2016-06-07 14:58:27
Original
1167 people have browsed it

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()

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template