Mongodb的副本、分片搭建方式( 二 )


接下来我们去节点去看看:
./mongodb2/bin/mongo --port 30002myrepl:SECONDARY> show tables2015-06-17T23:09:24.442+0800 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/mongo/shell/query.js:131myrepl:SECONDARY> #这里注意:SECONDARY节点默认不可读,需要运行下以下函数myrepl:SECONDARY> db.getMongo().setSlaveOk()myrepl:SECONDARY> show tablessystem.indexestabmyrepl:SECONDARY> db.tab.find(){ "_id" : ObjectId("55818d5d81f0b27bdfe0d373"), "idx" : 0 }#至此我们看到SECONDARY节点也正常 。
最后去仲裁节点看看
./mongodb3/bin/mongo --port 30003myrepl:ARBITER> db.getMongo().setSlaveOk()myrepl:ARBITER> show tables;2015-06-17T23:13:40.334+0800 error: {"$err" : "not master or secondary; cannot currently read from this replSet member","code" : 13436} at src/mongo/shell/query.js:131myrepl:ARBITER> #在这里仲裁节点只能做仲裁使用,不能存储任何数据
OK,副本模式搭建完成 。
**
二、分片模式
分片模式,是将数据分在不同的分片上,如果有个分片挂掉了,整个数据就不完整了,一般情况下,每个分片都会搭建一个副本集来防止这样的情况 。
而我同样在一台机器上来模拟这个分片模式,但是对不同的分片只用一个数据库(服务)来模拟副本集(副本的搭建和上面一样,只不过对每个副本集只启动了一个服务) 。
对于服务也是用一个服务来模拟 。其实分片模式只能搭建1个或3个配置服务 。配置服务只进行数据存放位置的记录,不进行数据存储 。
1.整体架构

Mongodb的副本、分片搭建方式

文章插图
2.服务分配情况
同样,我用不同的目录来搭建对应的服务,并分配不同的端口号
[23:32:02 fifi@CentOS6 test]$ rm */data/*[23:32:33 fifi@CentOS6 test]$ rm */log/*[23:49:39 fifi@CentOS6 test]$ ll mongodb*/bin/mongod*-rwxr-xr-x. 1 fifi fifi 23908720 Jun 16 17:00 mongodb0/bin/mongod0-rwxr-xr-x. 1 fifi fifi 23908720 Jun 17 23:28 mongodb1/bin/mongod1-rwxr-xr-x. 1 fifi fifi 23908720 Jun 16 16:56 mongodb4/bin/mongod4-rwxr-xr-x. 1 fifi fifi 23908720 Jun 16 16:57 mongodb5/bin/mongod5-rwxr-xr-x. 1 fifi fifi 23908720 Jun 16 17:26 mongodb6/bin/mongod6
3.开始搭建
大工程开始了,同志们保持头脑清醒
1)服务:
[23:37:11 fifi@CentOS6 test]$ cd mongodb1[23:37:38 fifi@CentOS6 mongodb1]$ ./bin/mongod1 --configsvr --dbpath data/ --port 30001 --logpath log/mongo.log --fork
2)服务(路由)
[23:39:20 fifi@CentOS6 mongodb1]$ cd ../mongodb0[23:40:18 fifi@CentOS6 mongodb0]$ ./bin/mongos --configdb 192.168.1.168:30001 --port 30000 --logpath log/mongo.log --fork
3)配置副本集
对于每个分片的服务我只启动一个服务来模拟
的副本:
Mongodb的副本、分片搭建方式

文章插图
[23:43:55 fifi@CentOS6 mongodb0]$ cd ../mongodb4/[23:44:23 fifi@CentOS6 mongodb4]$ ./bin/mongod4 --shardsvr --replSet shard1 --port 30004 --dbpath data/ --logpath log/mongo.log --fork
的副本:
[23:44:47 fifi@CentOS6 mongodb4]$ cd ../mongodb5/[23:46:12 fifi@CentOS6 mongodb5]$ ./bin/mongod5 --shardsvr --replSet shard2 --port 30005 --dbpath data/ --logpath log/mongo.log --fork
的副本
[23:46:36 fifi@CentOS6 mongodb5]$ cd ../mongodb6/[23:47:06 fifi@CentOS6 mongodb6]$ ./bin/mongod6 --shardsvr --replSet shard3 --port 30006 --dbpath data/ --logpath log/mongo.log --fork