MongoDB学习笔记(六)--复制集+sharding分片 && 总结

复制集+sharding分片                                                              

  • 背景

主机

IP

服务及端口

Server A 192.168.50.1 shard1_1:27017
shard2_1:27018
config:20000
mongos:30000
Server B 192.168.51.1 shard1_2:27017
shard2_2:27018
config:20000
mongos:30000
  • 创建数据目录及配置复制集

在Server A上启动shard1所用到的服务节点1

./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shard1_1 --logpath /data/shard1_1/shaed1_1.log --logappend --fork

在Server B上启动shard1所用到的服务节点2

./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shard1_2 --logpath /data/shard1_2/shaed1_2.log --logappend --fork

初始化

./mongo --port 27017

>config={_id:"shard1",members:[
...{_id:0,host:"192.168.1.50:27017"},
...{_id:1,host:"192.168.1.51:27017"}]
...}
>re.initiate(config)

在Server A上启动shard2所用到的服务节点1

./mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/shard2_1 --logpath /data/shard2_1/shaed2_1.log --logappend --fork

在Server B上启动shard2所用到的服务节点2

./mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/shard2_2 --logpath /data/shard2_2/shaed2_2.log --logappend --fork

初始化

./mongo --port 27018

>config={_id:"shard2",members:[
...{_id:0,host:"192.168.1.50:27018"},
...{_id:1,host:"192.168.1.51:27018"}]
...}
...
>re.initiate(config)
  • 配置Config Server

在Server A上启动Config Server服务

./mongod --configsvr  --port 20000 --dbpath /data/config --logpath /data/config/config.log --logappend --fork

在Server B上启动Config Server服务

./mongod --configsvr  --port 20000 --dbpath /data/config --logpath /data/config/config.log --logappend --fork
  • 配置mongos

在Server A上启动mongos服务

./mongos --configdb 192.168.50.1:20000,192.168.51.1:20000 --port 30000 --chunkSize 1 --logpath /data/mongos.log --logappend --fork

在Server B上启动mongos服务

./mongos --configdb 192.168.50.1:20000,192.168.51.1:20000 --port 30000 --chunkSize 1 --logpath /data/mongos.log --logappend --fork
  • 配置Shard Cluster
./mongo --port 30000

>use admin

>
db.runCommand({addshard:"shard1/192.168.50.1:27017,192.168.51.1:27017"
})

>
db.runCommand({addshard:"shard2/192.168.1.50:27018,192.168.51.1:27018"})
  • 验证Sharding正常工作
./mongo --port 30000

>for(var i=1;i<=100000;i++) db.user.inser({_id:i,school:"CDUT",name:"yyd"})


>
db.user.stats()
  • 查片
>db.shards.find()
  • 查数据库
>db.databases.find()
  • 查块
>db.chunks.find()
  • 获得集合概要
>db.printShardingStatus()

总结                                                                                           

index         index

其实上学期就接触了一些NoSQL的一些知识,只是在这个寒假才开始学习。但是也是碰巧,上学期一直没有在图书馆借到仅有的两门MongoDB的书,但是考完试的第二天书就被还到图书馆了,所以果断借了。

后面我还写PHP操作MongoDB。

联想到其他数据库,mysql,对于关系数据表而言,mongodb是提供了一个更快速的视图view;而对于PHP程序而言,mongodb可以作为一个持久化的数组来使用,并且这个持久化的数组还可以支持排序、条件、限制等功能。将mongodb代替mysql的部分功能,主要一个思考点就是:把mongodb当作mysql的一个view(视图),view是将表数据整合成业务数据的关键。比如说对原始数据进行报表,那么就要先把原始数据统计后生成view,在对view进行查询和报表。从这个意义上,mongodb提供了一个更快速,更使用的view。

MongoDB学习笔记(五)--复制集 && sharding分片传送门 http://www.cnblogs.com/yydcdut/p/3564470.html

转载请注明出处:http://www.cnblogs.com/yydcdut/p/3566489.html

原文地址:https://www.cnblogs.com/yydcdut/p/3566489.html