> 데이터 베이스 > MySQL 튜토리얼 > mongoDB single db convert to replicaSet

mongoDB single db convert to replicaSet

WBOY
풀어 주다: 2016-06-07 14:58:27
원래의
1168명이 탐색했습니다.

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿