1.环境准备
1.启动三个实例
mongod -port 27017 -dbpath D:\Mongodb\data -logpath D:\Mongodb\log\mongo.log -logappend -replSet rs0
mongod -port 27018 -dbpath D:\MongoDB1\data -logpath D:\MongoDB1\log\mongo.log -logappend -replSet rs0
mongod -port 27019 -dbpath D:\MongoDB2\data -logpath D:\MongoDB2\log\mongo.log -logappend -replSet rs0
三个实例不要关闭窗口
1.切换到admin数据库:use admin
3.配置集群
进入其中一个实例,配置设置,如下:config={_id:"rs0",members:[
... {_id:0,host:"localhost:27017","priority":3},
... {_id:1,host:"localhost:27018","priority":2},
... {_id:2,host:"localhost:27019","priority":1}]}
代码如下:
注:其中第一个“id”为复制集的ID标识,即"id":“rs0”;第二个“id”是复制集内成员的标识,即"id":0。
priority为节点优先级,数字越高,优先级越高
2.使得配置生效:rs.initiate(config)
详细代码如下所示:
注意:生效后可能会出现节点显示错误:
(明明是主节点,但却显示从节点)
只需要查看副本集状态即可更正: rs.status()
注:请注意编写代码前的”>符号的变化,在没有配置好复制集之前只有”>“,初始化后有”
rs0:SECONDARY>“了,SECONDARY表示该节点是从节点,PRIMARY表示该节点是主节点。[当然,当前显示有点问题,查看一下状态就会改变]
3.从节点配置
刚刚配置好的副本集中的从节点是无法进行数据库操作的:
要先进行从节点永久化设置:rs.slaveOk()
或者使用(推荐使用):rs.secondaryOk()