MongoDB的主从集群分为两种:
1. Master-Slave 复制(主从复制)
2. Replica Sets 复制(副本集)
之前采用Master-Slave模式的时候(详见Mongodb的主从部署),一旦Master停掉,客户端就会报异常,这个时候已经没有Master了,Slave不会自动接管Master
Replica Sets 也是一种Master-Slave,但它更健壮,一旦Master停掉后,将会在Slave中选举一个作为Master,这种方式也是官方推荐的。
MongoDB在1.6版本开发了replica set,主要增加了故障自动切换和自动修复成员节点.各个DB之间数据完全一致,最为显著的区别在于,副本集没有固定的主节点,它是整个集群选举得出的一个主节点.当其不工作时变更其它节点.
下面我们开始部署: 参考资料( )
2个Standard节点+1个Arbiter节点 搭建MongoDB Replication Sets
环境:
虚拟机:Oracle VM virtualbox 4.0.6
Linux:CentOS 5.6
x1 192.168.0.188
用x1一台机子的三个端口分别模拟3台机子
2个Standard节点
192.168.0.188:28010
192.168.0.188:28011
1个Arbiter节点 (注意arbiter仲裁节点只投票,不接收复制的数据!)
192.168.0.188:28012
第一步:创建目录
[root@x1 ~]# mkdir -p /data/replset/r0 //机子0号存放数据的目录
[root@x1 ~]# mkdir -p /data/replset/r1 //机子1号存放数据的目录
[root@x1 ~]# mkdir -p /data/replset/r2 //机子2号存放数据的目录
[root@x1 ~]# mkdir -p /data/replset/key //存放密钥的目录
[root@x1 ~]# mkdir -p /data/replset/log //存放日记的目录
第二步:创建Key
[root@x1 ~]# echo "replset1 key" > /data/replset/key/r0
[root@x1 ~]# echo "replset1 key" > /data/replset/key/r1
[root@x1 ~]# echo "replset1 key" > /data/replset/key/r2
[root@x1 ~]# chmod 600 /data/replset/key/r* //600,防止其它程序改写此KEY
第三步:以副本集的方式启动Mongodb
进入mongodb安装的bin目录运行如下:
启动方式一:
./mongod --dbpath=/data/replset/r0 --replSet replset1 --keyFile /data/replset/key/r0 --port 28010
./mongod --dbpath=/data/replset/r1 --replSet replset1 --keyFile /data/replset/key/r1 --port 28011
./mongod --dbpath=/data/replset/r2 --replSet replset1 --keyFile /data/replset/key/r2 --port 28012
注:--keyFile /data/key/r* 加了这个后,MongVUE就连不到了
启动方式二:直接在命令行输出查看
./mongod --dbpath=/data/replset/r0 --replSet replset1 --port 28010 --directoryperdb
./mongod --dbpath=/data/replset/r1 --replSet replset1 --port 28011 --directoryperdb
./mongod --dbpath=/data/replset/r2 --replSet replset1 --port 28012 --directoryperdb
启动方式三:后台运行
./mongod --dbpath=/data/replset/r0 --replSet replset1 --port 28010 --logpath=/data/replset/log/r0.log --logappend --fork --directoryperdb
./mongod --dbpath=/data/replset/r1 --replSet replset1 --port 28011 --logpath=/data/replset/log/r1.log --logappend --fork --directoryperdb
./mongod --dbpath=/data/replset/r2 --replSet replset1 --port 28012 --logpath=/data/replset/log/r2.log --logappend --fork --directoryperdb
这里用第二种启动方式做演示:
运行第一行代码启动第一个端口(机子)
接着ctrl+alt+f2进入控制台2运行第二行代码启动第二个端口(机子)
接着ctrl+alt+f3进入控制台3运行第三行代码启动第三个端口(机子)
|