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


看下每个服务的启动情况:
[23:49:48 fifi@CentOS6 test]$ ps xf./bin/mongod5 --shardsvr --replSet shard2 --port 30005 --dbpath data/ --logpath log/mongo.log./bin/mongod6 --shardsvr --replSet shard3 --port 30006 --dbpath data/ --logpath log/mongo.log./bin/mongod4 --shardsvr --replSet shard1 --port 30004 --dbpath data/ --logpath log/mongo.log./bin/mongos --configdb 192.168.1.168:30001 --port 30000 --logpath log/mongo.log --fork./bin/mongod1 --configsvr --dbpath data/ --port 30001 --logpath log/mongo.log --fork
4)开始初始化副本集配置
随便找个客户端登陆,注意端口号即可
的副本配置
[23:53:34 fifi@CentOS6 test]$ cd mongodb0/[23:53:38 fifi@CentOS6 mongodb0]$ ./bin/mongo --port 30004> cfg = { _id:"shard1", members:[... {_id:0, host:"192.168.1.168:30004"}... ]}> rs.initiate(cfg)> shard1:PRIMARY>
同样的副本配置:
[23:55:22 fifi@CentOS6 mongodb0]$ ./bin/mongo --port 30005> cfg = { _id:"shard2", members:[ {_id:0, host:"192.168.1.168:30005"} ]}> rs.initiate(cfg)> shard2:PRIMARY>
的副本配置:
[23:56:28 fifi@CentOS6 mongodb0]$ ./bin/mongo --port 30006> cfg = { _id:"shard3", members:[ {_id:0, host:"192.168.1.168:30006"} ]}> rs.initiate(cfg)>shard3:PRIMARY>
5)分片设置
[23:59:42 fifi@CentOS6 mongodb0]$ ./bin/mongo --port 30000mongos> sh.addShard("shard1/192.168.1.168:30004")mongos> sh.addShard("shard2/192.168.1.168:30005")mongos> sh.addShard("shard3/192.168.1.168:30006")#对集合创建索引(tab是我想进行分片的集合,可以在为空的状态下执行)mongos> db.tab.ensureIndex({"idx":1})#分片的集合mongos> sh.enableSharding("test")#片键mongos> sh.shardCollection("test.tab", {"idx":1})#分片状态mongos> sh.status()mongos> use adminswitched to db adminmongos> db.runCommand( { listshards : 1 } );{"shards" : [{"_id" : "shard1","host" : "shard1/192.168.1.168:30004"},{"_id" : "shard2","host" : "shard2/192.168.1.168:30005"},{"_id" : "shard3","host" : "shard3/192.168.1.168:30006"}],"ok" : 1}
这步里面只列出了需要输入的命令,回车后的效果就没贴出来 。
后面创建索引、对数据库启动分片以及片键的选择是非常重要的,是必须做的 。
(如果片键选择错了,可以到admin.中修改)
6)验证
接下来,我们来登录,然后对test.tab插入大量数据来看下效果 。
#区区三万条数据mongos> for (var i = 0; i <= 30000; i++) { db.tab.insert({idx:i});}WriteResult({ "nInserted" : 1 })mongos> mongos> #分片的状态,略去一下不重要的信息mongos> sh.status()--- Sharding Status --- databases:{"_id" : "test","partitioned" : true,"primary" : "shard1" }test.tabshard key: { "idx" : 1 }chunks:shard21shard11shard31#注意看这里的块范围{ "idx" : { "$minKey" : 1 } } -->> { "idx" : 0 } on : shard2 Timestamp(2, 0) { "idx" : 0 } -->> { "idx" : 13549 } on : shard1 Timestamp(3, 1) { "idx" : 13549 } -->> { "idx" : { "$maxKey" : 1 } } on : shard3 Timestamp(3, 0) #还有这个mongos> db.tab.stats(){"sharded" : true,"ns" : "test.tab","count" : 30001,"avgObjSize" : 48.004266524449186,"nindexes" : 2,"nchunks" : 3,"shards" : {"shard1" : {#shard1中的个数13549"ns" : "test.tab","count" : 13549,"size" : 650416,},"shard2" : {#shard2中的个数0"ns" : "test.tab","count" : 0,"size" : 0,},"shard3" : {#shard3中的个数16452"ns" : "test.tab","count" : 16452,"size" : 789760,}},"ok" : 1}mongos>
13549+16452 = 30001,可以看到分片模式搭建成功了 。
虽然没有存放任何数据,不过不要紧,只要你插入的足够多,中也会存放数据的 。
**
参考网址:
**
网址一