1 前提:
原来有个节点169,已经搭建了mongodb,现在想再增加两个节点167和168做repliset模式的mongo集群,
其中167做为协调节点,168作为副节点,169作为主节点2 配置
在原来169配置文件的基础上,增加一个配置:replSet=mongotest
原配置:dbpath=/opt/mongodb-3.0.6/db
logpath=/opt/mongodb-3.0.6/log/mongodb.log
logappend=true
新增的两个节点上做相同的配置,并创建好db目录
3 启动和初始化
在三个节点分别启动mongod
然后在其中一个节点上执行:use admin;
cfg={_id:"mongotest",members:[{_id:0,host:'*.168:27017',priority:1},{_id:1,host:'*.169:27017',priority:2},{_id:2,host:'*.167:27017',arbiterOnly:true}]};
rs.initiate(cfg) 就可以完成配置
priority 最高的节点即169节点将成为主节点
如果在其他节点执行show table等命令将会报错不是主节点Error: listCollections failed: { "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" },因为mongo默认只有主节点有增删改查权限
如果在169上执行命令,会报错如下:
has data already, cannot initiate set
原因是169上曾经插入过数据,找到db对应目录,删除数据库对应文件
重新执行initiate命令
如果想要改变cfg,则用rs.reconfig命令即可。
4 注意
默认只有主节点接受增删改查,要想在从节点上查询数据的话,得在从节点上线执行下 rs.slaveOk();
5 维护
增加节点:rs.add
删除节点:rs.remove
x