单机下执行:
/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/r1 --port 27018 --replSet myset
/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/r2 --port 27019 --replSet myset
/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/r3 --port 27020 --replSet myset
mongo --port 27018 进入节点:
进入主节点进行初始化
rs.initiate({
_id:"myset", // replSet指定的名称
members:[{
_id:0,
host:"127.0.0.1:27018" // 主节点ip与端口
}]
})
再将其他两个从节点加入到该复制集中
rs.add("127.0.0.1:27019")
rs.add("127.0.0.1:27020")
通过rs.status()查看效果,可以看到myset这个复制集中已经有了三个节点,stateStr指明了节点的类型,health为1表明该节点是健康的。
从库查看:
db.isMaster();
mongodb默认是从主节点读写数据,副本节点上不允许读,设置副本节点可读。
db.getMongo().setSlaveOk();
测试写入数据
db.tb.insert({"test1":"testval1"})
测试kill 主节点27018,集群自动选择27020作为主节点,
"_id" : 2,
"name" : "127.0.0.1:27020",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
主节点可以写入数据,重启27018节点,这时以前的主节点变成了从节点
"name" : "127.0.0.1:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
连接复制集
在MongoDB的连接字符串(connection url)中可以进行指定。
其中可以指定多个host:port,用英文逗号连接,并在最后的option中支持replicaSet参数,用于指定连接的复制集。例如:
mongodb://127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020/books?replicaSet=myset
参考:
链接:https://www.jianshu.com/p/f15325e19758
链接:http://blog.itpub.net/22664653/viewspace-710005/