您的位置:首页 > 数据库 > Mongodb

mongodb主从集群

2015-12-21 17:55 513 查看
mongodb安装,请参考mongodb2.6安装篇
主从集群
mongodb支持在多个机器中通过异步复制达到故障转移和实现冗余。
多机器中同一时刻只有一台用于写操作,正是由于这个情况,mongodb提供了数据一致性的保障,担当primary角色的机器能把读操作分发给slave。

mongodb的主从集群分为两种:
master-slave复制(主从)
replica Sets复制(副本集)

master-slave复制(主从)
只需要在某一个服务启动加上--master参数,而另一个服务加上--slave与--source参数,即可实现同步。mongodb的最新版本已经不推荐使用这种方法了。

一下2张图片来自互联网!!!
1:主――>从





2:从从从




这里我使用一台服务器做mongodb主从服务器,规划示例如下:
master主port:20001
slave从port:20002


创建master、slave目录
[root@localhost opt]# mkdir master slave
[root@localhost opt]# ll
total 8
drwxr-xr-x 2 root root 4096 Dec 14 04:57 master
drwxr-xr-x 2 root root 4096 Dec 14 04:57 slave
[root@localhost opt]# mkdir log
[root@localhost opt]# pwd
/opt


启动mongodb-master
[root@localhost opt]# mongod --master --dbpath=/opt/master/ --logpath=/opt/log/master.log --logappend --fork --port 20001
about to fork child process, waiting until server is ready for connections.
forked process: 1397
child process started successfully, parent exiting
[root@localhost opt]# netstat -ntpl|grep 2000
tcp        0      0 0.0.0.0:20001               0.0.0.0:*                   LISTEN      1397/mongod


启动mongodb-slave
[root@localhost opt]# mongod --slave --source 192.168.33.131:20001 --dbpath=/opt/slavogpath=/opt/log/slave.log --logappend --fork --pe/ --logpath=/opt/log/slave.log --logappend --fork --port 20002
about to fork child process, waiting until server is ready for connections.
forked process: 1435
child process started successfully, parent exiting
[root@localhost opt]# netstat -ntpl|grep 20002
tcp        0      0 0.0.0.0:20002               0.0.0.0:*                   LISTEN      1435/mongod


mongodb-master登陆
[root@localhost opt]# mongo --port 20001
MongoDB shell version: 2.6.11
connecting to: 127.0.0.1:20001/test
> db
test
> show tables;


插入数据,并查看插入的数据
> db.c1.insert({name:"haha"})
WriteResult({ "nInserted" : 1 })
> db.c1.find()
{ "_id" : ObjectId("566dde3a9701d2a9501e7c05"), "name" : "haha" }
> db.c1.insert({name:"abc"})
WriteResult({ "nInserted" : 1 })
> db.c1.find()
{ "_id" : ObjectId("566dde3a9701d2a9501e7c05"), "name" : "haha" }
{ "_id" : ObjectId("566dde919701d2a9501e7c06"), "name" : "abc" }
>


mongodb-salve登陆以及查看master同步的数据
[root@localhost ~]# mongo --port 20002
MongoDB shell version: 2.6.11
connecting to: 127.0.0.1:20002/test
> db
test
> show tables;
c1
system.indexes
> db.c1.find()
{ "_id" : ObjectId("566dde3a9701d2a9501e7c05"), "name" : "haha" }
因为是slave服务,所以无法插入数据,只能查看数据
> db.c1.insert({name:"abc"})
WriteResult({ "writeError" : { "code" : undefined, "errmsg" : "not master" } })
> db.c1.find()
{ "_id" : ObjectId("566dde3a9701d2a9501e7c05"), "name" : "haha" }
{ "_id" : ObjectId("566dde919701d2a9501e7c06"), "name" : "abc" }


本文出自 “村里的男孩” 博客,请务必保留此出处http://noodle.blog.51cto.com/2925423/1726897
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: