简单副本集的搭建

 

官方demo的最小化的副本集为Three Member Sets,一个primary和两个secondary。我们先就搭建一个这样的测试环境。

 

首先建立三个数据目录和日志目录:

1 cd /opt/mongodb3/data/
2 
3 mkdir -p rs0-0  rs0-1  rs0-2
4 
5 cd /opt/mongodb3/log/
6 
7 mkdir -p rs0-0 rs0-1 rs0-2

然后我们以守护进程的方式启动三个mongod进程,端口分别是37017,37018和37019:

./bin/mongod --fork --dbpath data/rs0-0/ --logpath log/rs0-0/rs0-0.log --rest --replSet rs0 --port 37017

./bin/mongod --fork --dbpath data/rs0-1/ --logpath log/rs0-1/rs0-1.log --rest --replSet rs0 --port 37018

./bin/mongod --fork --dbpath data/rs0-2/ --logpath log/rs0-2/rs0-2.log --rest --replSet rs0 --port 37019

跟启普通的mongod进程基本相同,不同的跟了--replSet选项,rs0是该副本集的名称。--rest参数是打开web监控页面,比如我们这里监听37017端口,则打开http://192.9.10.13:38017/(mongod端口加上1000)就可以看到这个mongodb数据库进程的信息,如果是副本集就能查看整个副本集的相关信息。

然后我们用mongo shell连上端口为37017的mongod:

1 ./bin/mongo -port 37017
2 use admin

接着我们需要初始化一个Replica Set:首先创建一个副本集配置对象:

1.    rsconf={
2.        "_id" : "rs0",
3.        "members" : [
4.            {
5.                "_id" : 0,
6.                "host" : "192.9.10.13:37017"
7.            }
8.        ]
9.    }

_id:代表副本集名称,numbers:代表成员。

然后用rs.initiate()进程初始化:

1.    rs.initiate(rsconf)
2.    {
3.        "info" : "Config now saved locally.  Should come online in about a minute.",
4.        "ok" : 1
5.    }

添加成员:

通过rs.add()将另外两个mongod添加到副本集当中:

1.    rs0:PRIMARY> rs.add("192.9.10.13:37018")
2.    { "ok" : 1 }
3.    rs0:PRIMARY> rs.add("192.9.10.13:37019")
4.    { "ok" : 1 }

会发现37017这个mongod默认就是PRIMARY节点了。通过rs.conf()可以查看集群的配置情况:

1.    rs0:PRIMARY> rs.conf()
2.    {
3.        "_id" : "rs0",
4.        "version" : 3,
5.        "members" : [
6.            {
7.                "_id" : 0,
8.                "host" : "192.9.10.13:37017"
9.            },
10.            {
11.                "_id" : 1,
12.                "host" : "192.9.10.13:37018"
13.            },
14.            {
15.                "_id" : 2,
16.                "host" : "192.9.10.13:37019"
17.            }
18.        ]
19.    }

修改priority:

副本中所有的secondary节点都有一个priority值,为任意的浮点数,该值越大则该节点在election中越优先成为primary节点,通过下面的命令修改该值,目前primary节点是37017:

1.    rs0:PRIMARY> cfg=rs.conf()
2.    {
3.        "_id" : "rs0",
4.        "version" : 7,
5.        "members" : [
6.            {
7.                "_id" : 0,
8.                "host" : "192.9.10.13:37017"
9.            },
10.            {
11.                "_id" : 1,
12.                "host" : "192.9.10.13:37018"
13.            },
14.            {
15.                "_id" : 2,
16.                "host" : "192.9.10.13:37019"
17.            }
18.        ]
19.    }

我们将37019节点的priority设置成2:

1.    rs0:PRIMARY> cfg=rs.conf()
2.    cfg.members[2].priority = 2

然后执行:
rs0:PRIMARY> rs.reconfig(cfg)

注意:执行rs.reconfig()命令会强制整个副本集集群进行一次election,这样priority较高的37019节点便成了primary节点。

转自:http://blog.csdn.net/huwei2003/article/details/40453159

参考:
http://www.cnblogs.com/zhoujinyi/p/3554010.html