分片:数据非常大,把不同段的数据拆了,1-1000000放在节点1,1000000-2000000放在节点2,200000-300000放在节点上。把不同的数据放在不同的服务器叫shard分片。

请求交给mongos,人对mongos查数据写数据。

1:在3台独立服务器上,分别运行 27017,27018,27019实例, 互为副本集,形成3套repl set
2: 在3台服务器上,各配置config server, 运行27020端口上 3: 配置mongos
./bin/mongos --port 30000 \
--dbconfig 192.168.1.201:27020,192.168.1.202:27020,192.168.1.203:27020 4:连接路由器
./bin/mongo --port 30000 5: 添加repl set为片
>sh.addShard(‘192.168.1.201:27017’);
>sh.addShard(‘192.168.1.203:27017’);
>sh.addShard(‘192.168.1.203:27017’); 6: 添加待分片的库
>sh.enableSharding(databaseName); 7: 添加待分片的表
>sh.shardCollection(‘dbName.collectionName’,{field:1}); Field是collection的一个字段,系统将会利用filed的值,来计算应该分到哪一个片上.
这个filed叫”片键”, shard key
mongodb不是从单篇文档的级别,绝对平均的散落在各个片上, 

而是N篇文档,形成一个块"chunk",
优先放在某个片上,片上又分为一个一个的块,
当这片上的chunk,比另一个片的chunk,区别比较大时, (>=3) ,会把本片上的chunk,移到另一个片上, 以chunk为单位,
维护片之间的数据均衡 问: 为什么插入了10万条数据,才2个chunk?
答: 说明chunk比较大(默认是64M)
在config数据库中,修改chunksize的值.
Use config
Show tables
Db.settings.find(); //{id:’chunksize’,’value’:64} 问: 既然优先往某个片上插入,当chunk失衡时,再移动chunk,
自然,随着数据的增多,shard的实例之间,有chunk来回移动的现象,这将带来什么问题?
答: 服务器之间IO的增加, 接上问: 能否我定义一个规则, 某N条数据形成1个块,预告分配M个chunk,
M个chunk预告分配在不同片上.
以后的数据直接入各自预分配好的chunk,不再来回移动? 答: 能, 手动预先分片!
mkdir -p /data/r17 /data/r18 /data/r20 /data/mlog    //17,18是shard的端口,20是configsvr的端口

//启动2个mongo片的实例
/usr/local/mongodb/bin/mongod --dbpath /data/r17/ --logpath /data/mlog/r17.log --port 27017 --fork --smallfile
/usr/local/mongodb/bin/mongod --dbpath /data/r18/ --logpath /data/mlog/r18.log --port 27018 --fork --smallfile //准备configsvc(不是一台存储数据的服务器,而是存储配置信息的服务器)
/usr/local/mongodb/bin/mongod --dbpath /data/r20/ --logpath /data/mlog/r20.log --port 27020 --fork --configsvr //mongos路由器
/usr/local/mongodb/bin/mongos --logpath /data/mlog/r30.log --port 30000 --configdb 192.168.202:27020 --fork//哪台configsvr为他服务,现在mongos和configsvr连在了一起但是还没有和shard连在一起。 ps aux | grep mongo //可以看到刚才的4个进程 //连接mongos
./bin/mongo --port 30000 //添加repl set为片,现在3者都连接到一起了,(要先连接进30000端口,mongo 192.168.1.202:30000)
>sh.addShard(‘192.168.1.201:27017’);
>sh.addShard(‘192.168.1.203:27018’); sh.status() //可以查看分片信息 use test
db.stu.insert({ss:"ss"})
db.stu.insert({ss:"ss"})
db.stu.insert({ss:"ss"})
db.stu.insert({ss:"ss"})
db.stu.insert({ss:"ss"}) //连接到27017
./bin/mongo --port 27017
db.find() //有数据 //连接到27018
./bin/mongo --port 27018
db.find() //没有数据,因为没有指定分片规则 //添加待分片的库(谁可以分片)
>sh.enableSharding('shop'); //shop库可以分片 sh.status() //可以看到shop库可以分片 //添加待分片的表
>sh.shardCollection('shop.goods',{goods_id:1}); sh.status() //可以看到shop库goods表的状态 //添加2000数据
use shop
for(var i=1;i<600000;i++){
db.goods.insert({ss:"ss"+1})
}
db.goods.find() //查看分片数据
./bin/mongo --port 27017
db.find()
./bin/mongo --port 27018
db.find()

mongodb10---分片的更多相关文章

  1. elasticsearch高级配置一 ---- 分片分布规则设置

    cluster.routing.allocation.allow_rebalance 设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active ...

  2. redis分片

    本文是在window环境下测试 什么是分片 当数据量大的时候,把数据分散存入多个数据库中,减少单节点的连接压力,实现海量数据存储 那么当多个请求来取数据时,如何知道数据在哪个redis呢,redis有 ...

  3. CephRGW 在多个RGW负载均衡场景下,RGW 大文件并发分片上传功能验证

    http://docs.ceph.com/docs/master/radosgw/s3/objectops/#initiate-multi-part-upload 根据分片上传的API描述,因为对同一 ...

  4. Ceph RGW服务 使用s3 java sdk 分片文件上传API 报‘SignatureDoesNotMatch’ 异常的定位及规避方案

    import java.io.File;   import com.amazonaws.AmazonClientException; import com.amazonaws.auth.profile ...

  5. IP分片详解

    IP分片是网络上传输IP报文的一种技术手段.IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组.不同的链路类型规定有不同最大长度的链路层数据帧,称为链路层MTU(最大传输单 ...

  6. MongoDB的分片(9)

    什么是分片 分片是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这些块分散到若干片里, ...

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

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

  8. 用百度webuploader分片上传大文件

    一般在做文件上传的时候,都是通过客户端把要上传的文件上传到服务器,此时上传的文件都在服务器内存,如果上传的是视频等大文件,那么服务器内存就很紧张,而且一般我们都是用flash或者html5做异步上传, ...

  9. mongodb分片配置

    通过YUM库自动安装Mongodb 手动安装配置mongodb 验证mongodb主从复制过程 验证mongodb副本集并实现自动切换 实验mongodb使用gridfs存放一个大文件 1.创建数据目 ...

  10. 探索C#之虚拟桶分片

    阅读目录 背景 虚拟桶(virtual buckets) 实现 总结 背景 关于数据分片讨论最多的是一致性hash,然而它并不是分布式设计中的银弹百试百灵. 在数据稳定性要求比较高的场景下它的缺点是不 ...

随机推荐

  1. STM32定时器的两个小难点

    TIM1 TIM8 挂在APB2上 一般为72M 也即APB2分频系数为1其余TIMER可以认为都挂在APB1上,一般为36M 也即APB1分频系数为2 或者更大 至少为2 APB1不能超过36M定时 ...

  2. Postfix telnet www.azengna.com 25 Connection Refused 但是localhost连接成功

    修改配置文件 vi /etc/postfix/main.cf 原先配置信息 .... inet_interfaces = all #inet_interfaces = $myhostname,loca ...

  3. 单链表 C语言 学习记录

    概念 链接方式存储 链接方式存储的线性表简称为链表(Linked List). 链表的具体存储表示为: 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的). 链表中 ...

  4. JSP表达式语言(EL)

    JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单.JSP  EL既可以用来创建算术表达式也可以用来创建逻辑表达式.在JSP  EL表达式内可以使用整数型.浮点型.字符串.常量 ...

  5. luoguT21777

    #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> ...

  6. Git x SVN 当前工作流程

    git-svn 当前工作流程 @ixenos 2018-12-27 21:37:47 前言:用惯了git,再用svn简直反人类,所以……还是用git-svn过渡一下 (由于远程还没有dev,直接坑爹地 ...

  7. [Usaco2009 Open]工作安排Job

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1457  Solved: 687[Submit][Status][Discuss] Descriptio ...

  8. 学.net必学的东西 10项【不知道我能不能学这么多,!- -,光程序编辑我都累死了】

    原文发布时间为:2008-10-30 -- 来源于本人的百度文章 [由搬家工具导入] 10项.NET必学的技术2007年08月28日 星期二 14:58 1、WCF (Windows Communic ...

  9. resin web项目的 编码问题

    问题描述: 服务器迁移,迁移以后Linux系统编码由 UTF-8 变成了GBK !!! 导致在resin 中运行java web项目,调用 http 接口,解析http 接口的返回内容 如:xml 时 ...

  10. [洛谷U22157]刷水题(数位dp)(hash)

    题目背景 做正经题是不可能做正经题的,这辈子都不可能做正经题的,毒瘤题又不会做毒瘤题,就是水题这种东西,才维持了蒟蒻的信心: 题目描述 这里有N+1 道水题,编号分别为0 ~N+1 ,每道水题都有它自 ...