首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Mongodb的副本集部署(1)

Mongodb的副本集部署(1)

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运行第三行代码启动第三个端口(机子)
返回列表