MongoDB replica set安装

一、节点类型

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的高