mongodb主从集群

mongodb安装,请参考mongodb2.6安装篇

主从集群

mongodb支持在多个机器中通过异步复制达到故障转移和实现冗余。

多机器中同一时刻只有一台用于写操作,正是由于这个情况,mongodb提供了数据一致性的保障,担当primary角色的机器能把读操作分发给slave。


mongodb的主从集群分为两种:

master-slave复制(主从)

replica Sets复制(副本集)


master-slave复制(主从)

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


一下2张图片来自互联网!!!

1:主――>从

wKiom1Z30YHQ-kYyAABDwT34hqo992.jpg


    主

2:从

wKioL1Z30arCm4JfAAB0O2QW44w847.jpg


这里我使用一台服务器做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" }


你可能感兴趣的:(mongodb主从集群)