一、节点类型
standard:常规节点,它存储一份完整的数据副本,参与选举投票,有可能成为primary节点。
passive:存储了完整的数据副本,参与投票,不能成为primary节点。
arbiter:仲裁节点,只参与投票,不接收复制的数据,也不能成为primary节点。
一个repica sets节点数量最好为奇数(odd)。
二、relica sets 集群三节点分布
实验是三个节点:
两个standard节点(这两个节点直接可以互切primary secondary)。
一个arbiter节点,它手中握着一张选票,决定上面两个standard节点中的哪一个可以成为primay。
1、建立一个mongodb.conf配置文件,放在什么位置都可以,并添加以下内容
unixSocketPrefix = /data/mongodb/logs/ logpath = /data/mongodb/logs/mongodb.log dbpath = /data/mongodb/db/ directoryperdb = true smallfiles = true logappend = true maxConns = 2000 journal = true replSet = test noauth = true port = 27017 fork = true rest = true cpu = true
2、建立数据库文件夹
mkdir -p /data/mongodb/{db,logs}
3、启动三个服务器的mongodb
/opt/mongodb/bin/mongod -f /etc/mongod.conf
4、开始配置,添加服务器,在哪个服务器上执行都可以,如果没弄错,默认在哪个服务器上先配置,它就是为主服务器。
cfg={_id:'test',members:[ {_id:0,host:'192.168.137.4:27017'}, {_id:1,host:'192.168.137.5:27017'}]}
5、初始化服务
rs.initiate(cfg)
看是否返回,以下这类信息,可能要等一小会。
"info" : "Config now saved locally. Should come online in about a minute.", "ok" : 1
6、查看一下服务状态,是否正常,看以下就是比较正常了。一主一从的
rs.status()
{ "_id" : 1, "name" : "192.168.137.4:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 2153, "optime" : { "t" : 1374738423, "i" : 1 }, "optimeDate" : ISODate("2013-07-25T07:47:03Z"), "lastHeartbeat" : ISODate("2013-07-25T08:23:13Z"), "lastHeartbeatRecv" : ISODate("2013-07-25T08:23:14Z"), "pingMs" : 0, "syncingTo" : "192.168.137.5:27017" }, { "_id" : 2, "name" : "192.168.137.5:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 2258, "optime" : { "t" : 1374738423, "i" : 1 }, "optimeDate" : ISODate("2013-07-25T07:47:03Z"), "self" : true }
7、添加仲裁服务器,这个服务器器,可以是低配置的,也可以拿别的服务器,用用。
rs.addArb("192.168.137.3:27017")
rs.status()
8、到此算是配置完成了,如果出错,可留言给我,以下就是测试一下配置的情况了
在主的服务器上用以下代码测试一下看看是否正常。
use test db.book.insert({'title':'1'}) db.book.insert({'title':'2'}) db.book.insert({'title':'3'}) db.book.find()
之后,到你的从服务器上登陆到mongodb里面,执行以下命令
rs.slaveOk() use test db.book.find()
如果返回,是你的刚刚在主库上的数据,哪就说明。。。。。。你懂的。
9、如果你要添加一个新节点,哪么可以执行以下命令,当然,你要先启动服务啥,可别忘了。
rs.add('192.168.137.6:27017')
replica set的优点就是没有单点故障,可用性比master-slave的高