简单副本集的搭建
官方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