0

这两天在学习搭建Mongo DB复制集,查阅了一些资料,主要是参照官方手册,但是遇到了下面的问题。

采用的mongo DB的版本是当前最新版本3.0.6

单机,多端口搭建复制集,按照官方手册,没有遇到问题。

多机,都是默认27017端口遇到问题。
机器规划如下:

192.168.3.60 primary
192.168.3.61 secondary
192.168.3.67 secondary

我首先配置了host文件,三台机器可以相互访问。
(1)三台机器的配置文件内容如下,都是一样的
systemLog:
destination: file
path: /software/mongodb/data/log/mongodb.log
logAppend: true
storage:
dbPath: /software/mongodb/data/db
replication:
replSetName: rs0

(2)通过bin/mongod –config mongo.config启动mongo DB服务
(3)我在60上面,通过mongo 命令连接mongo DB
` 按照官方手册的话,我直接在60节点上执行:
1)rs.initiate()方法,此时60变成primary节点,可以使用rs.isMaster()查看其相关状态,可以通过rs.status()方法查看状态;
2)rs.add(“host61”),使用该方法添加61节点,但是添加之后,通过rs.status()查看状态的时候,新添加的61节点,state:0,stateStr:”STARTUP”状态;

也就是说,好像是不能够动态的添加节点,不知道是我操作有问题,还是官方说明手册有问题。

除此之外,通过查找资料,发现可以通过这种方式来大家复制集
执行了上面的(1)、(2)、(3)之后,在执行rs.initiate()方法的时候,通过传递参数来实现
(4)第(3)步之后,如果执行rs.status(),可以看到下面的提示信息
{
“info” : “run rs.initiate(…) if not yet done for the set”,
“ok” : 0,
“errmsg” : “no replset config has been received”,
“code” : 94
}

此时不要直接执行rs.initiate()方法,先定义变量:
var config = {_id:”rs0″, members:[{_id:0, host:”host60″}, {_id:1, host:”host61″}, {_id:2, host:”host67″}]};
把此参数作为上面参数的方法
执行:rs.initiate(config)方法

再次查看rs.status()可以看到复制集搭建成功。

可是这样的话,没办法动态的为复制集添加节点了?
是官方手册有问题,还是我执行的操作过程有问题?