mongodb 集群分片
2017-07-27 17:01
375 查看
分片
在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量,这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据
为什么使用分片
本地磁盘不够大当请求量巨大时会出现内存不足。
垂直扩展价格昂贵(内存、磁盘、cpu)
实现分片
分片结构图如下:实现分片需要3部分:
路由服务器mongos:客户端由此接入,根据分片依据,将数据写入到不同的数据服务器
配置服务器mongod:将数据进行分片的依据
数据服务器mongod:可以有多台物理机,用于存储实际的数据块
设计端口如下:
路由服务器:60001
配置服务器:60002
数据服务器1:60003
数据服务器2:60004
step1:启动数据服务器,当前位于Desktop目录下
sudo mkdir t1 sudo mkdir t2 sudo mongod --port 60003 --dbpath=~/Desktop/t1 sudo mongod --port 60004 --dbpath=~/Desktop/t2
step2:启动配置服务器
sudo mkdir conf sudo mongod --port 60002 --dbpath=~/Desktop/conf
step3:启动路由服务器
sudo mongos --port 60001 --configdb 192.168.196.128:60002
step4:在路由服务器中添加数据服务器
mongo --port 60001 use admin db.runCommand({addshard:'192.168.196.128:60003'}) db.runCommand({addshard:'192.168.196.128:60004'})
step5:对数据库test1启用分片
db.runCommand({enablesharding:'test1'})
step6:指定片键,即集合中文档的分片依据
db.runCommand({shardcollection:'test1.t1',key:{name:1}})
step7:测试数据,向集合中插入1W条数据
for(i=0;i<10000;i++){ db.t1.insert({name:'abc'+i}) }
step8:查看数据存储情况
db.printShardingStatus()
可以查看到数据均匀存储在了数据服务器上
step9:查询数据
db.t1.find({name:'abc1000'}) db.t1.find({name:'abc9000'})
分片的使用,对于客户端是透明的,对数据的读写没有变化
相关文章推荐
- mongodb集群之分片设计和实现
- mongodb分片集群的管理命令集合
- mongodb学习记录---集群分片Shard_1
- mongodb 在单机上搭建分片集群 详细实战过程
- mongoDB分片集群配置详解
- mongodb sharding cluster(分片集群)
- MongoDB的分片集群搭建
- MongoDB的分片集群基本配置教程
- 在服务器上设置mongodb分片集群开机自启动
- 【MongoDB】在windows平台下mongodb的分片集群(五)
- mongodb分片集群之移除分片
- MongoDB 3.2.7 基于keyFile的认证在副本集+集群分片中的使用
- mongodb 搭建集群(分片+副本集)
- MongoDB健壮集群——用副本集做分片
- 配置MongoDB3.04集群分片
- mongodb 集群及分片
- MongoDB的分片集群配置
- 【MongoDB】在windows平台下mongodb的分片集群(五)
- MongoDB 分片集群
- Mongodb 集群分片部署