mongodb 集群分片
分片
- 在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集群+分片部署(二)
机器:10.165.38.68 10.165.38.72 部署包:mongodb-linux-x86_64-rhel55-3.0.2.tgz(百度云盘下载地址:http://pan.baidu. ...
- MongoDB集群——分片
1. 分片的结构及原理分片集群结构分布: 分片集群主要由三种组件组成:mongos,config server,shard1) MONGOS数据库集群请求的入口,所有的请求都通过mongos进行协调, ...
- MongoDB集群分片部署
MongoDB中使用分片集群结构分布: 三个主要组件: Shard: 用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故 ...
- 搭建高可用mongodb集群(四)—— 分片(经典)
转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还 ...
- [转]搭建高可用mongodb集群(四)—— 分片
按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...
- 搭建高可用mongodb集群(四)—— 分片
按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...
- 搭建高可用mongodb集群(四)—— 分片
按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...
- 搭建mongodb集群(副本集+分片)
搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集 ...
随机推荐
- 【LightOJ1259】Goldbach`s Conjecture(数论)
[LightOJ1259]Goldbach`s Conjecture(数论) 题面 Vjudge T组询问,每组询问是一个偶数n 验证哥德巴赫猜想 回答n=a+b 且a,b(a<=b)是质数的方 ...
- Bzoj3992:[SDOI2015]序列统计
题面 Bzoj Sol pts 1 大暴力很简单,\(f[i][j]\)表示到第\(i\)个位置,前面积的模为\(j\)的方案 然后可以获得\(10\)分的好成绩 # include <bits ...
- C#服务器端生成报告文档:使用帆软报表生成Word、Pdf报告
一.帆软报表简介 报表工具中,帆软报表相比Crystal Report(水晶报表).SQL Server Report Service(SSRS)等报表工具来说算是佼佼者,此外帆软报表在统计图表.数据 ...
- Java中常见数据结构Map之HashMap
之前很早就在博客中写过HashMap的一些东西: 彻底搞懂HashMap,HashTableConcurrentHashMap关联: http://www.cnblogs.com/wang-meng/ ...
- gradle build docker image
前言:其实gradle-docker插件干的事和我们手动制作镜像是一样的,只不过它封装了一些步骤而已. eg:如果我们要将项目打包成镜像,首先我们要写Dockerfile,这是制作镜像的不可或缺的第一 ...
- 关于Eclipse中Ctrl+Alt+Down和Ctrl+Alt+Up不起作用的解决方法
1.其它软件热键冲突,把其它软件的热键修改为其它按键,或者删掉热键 2.Intel显卡快捷键问题 1).你虽然禁用Intel快捷键,但是Intel快捷键仍然是Ctrl+alt+down,还是存在冲突, ...
- openlayers渲染mapbox gl的vector tile
准备条件 https://openlayers.org/en/v4.6.5/build/ol.js https://cdn.polyfill.io/v2/polyfill.min.js DEMO &l ...
- 什么是yum源,如何更改yum源
Yum(全称为 Yellow dog Updater, Modified) yum是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器 ...
- mac下利用Breakpad的dump文件进行调试
一.前情回顾 最近把公司的一个视频处理程序更新了一个版本,准备提交测试的发现了崩溃的情况.这个程序采用Qt和ffmpeg技术栈开发,主要用于对视频进行渲染拼接处理,在Windows和mac两个平台同时 ...
- IntelliJ Idea常用的快捷键
以下是IntelliJ Idea2017版的,基本上不会有什么变化 IntelliJ Idea这个编译器现在非常流行,他强大的快捷键非常好用,相比于eclipse,IntelliJ Idea界面也比e ...