分片

  • 在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 集群分片的更多相关文章

  1. 搭建高可用mongodb集群—— 分片

    从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出 ...

  2. mongodb集群+分片部署(二)

    机器:10.165.38.68    10.165.38.72 部署包:mongodb-linux-x86_64-rhel55-3.0.2.tgz(百度云盘下载地址:http://pan.baidu. ...

  3. MongoDB集群——分片

    1. 分片的结构及原理分片集群结构分布: 分片集群主要由三种组件组成:mongos,config server,shard1) MONGOS数据库集群请求的入口,所有的请求都通过mongos进行协调, ...

  4. MongoDB集群分片部署

    MongoDB中使用分片集群结构分布: 三个主要组件: Shard: 用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故 ...

  5. 搭建高可用mongodb集群(四)—— 分片(经典)

    转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还 ...

  6. [转]搭建高可用mongodb集群(四)—— 分片

    按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...

  7. 搭建高可用mongodb集群(四)—— 分片

    按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...

  8. 搭建高可用mongodb集群(四)—— 分片

    按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...

  9. 搭建mongodb集群(副本集+分片)

    搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集 ...

随机推荐

  1. Luogu3118:[USACO15JAN]Moovie Mooving

    题面 传送门 Sol 设\(f[S]\)表示看过的电影集合为\(S\),当前电影的最大结束时间 枚举电影和电影的开始时间转移 可以对开始时间\(sort\) 二分一下转移即可 # include &l ...

  2. [HEOI2016]游戏

    二分图匹配(网络流实现) # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a ...

  3. 论文学习:Fully Convolutional Networks for Semantic Segmentation

    发表于2015年这篇<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割领域举足轻重. 1 CNN 与 FCN 通 ...

  4. Get the Job You Want(大学英语综合教程4课文)

    UNIT3-1 Harvey Mackay, who runs his own company, often interviews applicants for jobs. Here he lets ...

  5. javascript 特殊的面向对象以及继承详解(入门篇)

    学习Javascript人,大多听说一句话叫js里面一切都是对象.我刚开始接触javascript面向对象编程时候,挺乱的,我当时习惯性的把PHP的面像对象思想套用在js上面,其实js的面向对象与传统 ...

  6. IE浏览器右键菜单插件开发(上篇)——自定义一个IE右键菜单项

    要做一个IE右键浏览器插件,得3步走. 第一,在IE右键菜单上添加自定义菜单名称,是通过注册表实现的,如下: string regkey = @"Software\Microsoft\Int ...

  7. redis笔记总结之redis介绍

    一.Redis介绍: redis的发展历史简单的理解为因为使用类似MySql这类关系型数据库不方便进而开发的开源的.轻量级的.非关系型的,直到现在一直不断完善的一款NoSql数据库.具体的介绍大家可以 ...

  8. 仿QQ发语音、图片选择、表情选择demo

    一款仿QQ发语音.图片选择.调用拍照.表情选择的demo git地址:https://github.com/PureLovePeter/pic.git.  喜欢的请 star  star star,共 ...

  9. 数据定义: CREATE、DROP、ALTER

    CREATE DATABASE 句法 CREATE DATABASE [IF NOT EXISTS] db_name 数据库.表.索引.列和别名 中被给出. 如果数据库已经存在,并且你没有指定 IF ...

  10. Python 3.6.4 / win10 使用pip安装keras时遇到依赖的PyYAML安装出错

    PS C:\Users\myjac\Desktop\simple-chinese-ocr> pip install keras Collecting keras Downloading http ...