接这篇博客:

http://www.cnblogs.com/xiaoit/p/4479066.html

这里不再说明安装过程。

1:分片简介

分片是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在sharding的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式MongoDB集群。MongoDB的数据分块称为chunk。每个chunk都是Collection中一段连续的数据记录,通常最大尺寸是200MB,超出则生成新的数据块。

2:

配置MongoDB的Sharding Cluster需要3中角色:
a:Shard Server
Shard Server 即存储数据的分片,每个Shard可以是一个实例,也可以是一个副本集。为了实现每个Shard内部的auto-failover,官方建议,每一个Shard为一组Replica Set .
b:Config Server
为了将一个特定的collection存放在多个shard中。需要为collection指定一个shard key,例如{age:1}.shard key 决定了数据存放在哪个分片中。Config Server 就是用来存储所有Shard节点的配置信息、分片的分布情况、该集群中所有DB和collection的sharding配置信息。
c:Route Process
这是一个前端的路由进程,客户端由此进入。然后会询问Config Server需要到哪个Shard上查询或者保存记录?再连接相应的Shard进行操作,最后将结果返回给客户端。客户端只需原封不动的将原来发给Mongod的查询或者更新请求发给Route Process即可。不用关心文档到底存储在哪个Shard上面。

在一台机器上模拟环境配置分片
Shard Server 1:27017
Shard Server 2:27018
Config Server :27019
Route Process:40000

3:创建数据目录并保证有读写权限

mkdir -p ./data/shard/{s01,s02}

4:启动Shard Server1:

[root@localhost mongodb]# ./bin/mongod --port 27017 --dbpath ./data/shard/s01 --logpath ./log/s01 --fork
about to fork child process, waiting until server is ready for connections.
forked process: 54045
child process started successfully, parent exiting

  

启动Shard Server2:

[root@localhost mongodb]# ./bin/mongod --port 27018 --dbpath ./data/shard/s02 --logpath ./log/s02 --fork
about to fork child process, waiting until server is ready for connections.
forked process: 54065
child process started successfully, parent exiting

  

启动Config Server

[root@localhost mongodb]# mkdir -p ./data/shard/config
[root@localhost mongodb]# ./bin/mongod --port 27019 --dbpath ./data/shard/config --logpath ./log/configlog --fork
about to fork child process, waiting until server is ready for connections.
forked process: 54111
child process started successfully, parent exiting

注意:我们完全可以像启动普通Mongod服务一样启动,不需要添加-shardsvr和configsvr参数。因为两个参数的作用就是改变启动端口的,这里我们自行指定端口就可以了。

启动Route Process

[root@localhost mongodb]# ./bin/mongos --port 40000 --fork --logpath ./data/shard/route.log --chunkSize 1 --configdb localhost:27019
2015-05-05T01:28:04.996-0700 warning: running with 1 config server should be done only for testing purposes and is not recommended for production
about to fork child process, waiting until server is ready for connections.
forked process: 54169
child process started successfully, parent exiting

chunkSize :指定chunk的大小,默认为200M。为了方便测试指定为1M。意思是当这个分片中插入的数据大于1M时候开始数据转移。

5:配置Sharding

此时直接连mongos路由进程即可

[root@localhost mongodb]# ./bin/mongo admin --port 40000
MongoDB shell version: 2.6.9
connecting to: 127.0.0.1:40000/admin
mongos>
[root@localhost mongodb]# ./bin/mongo admin --port 40000
MongoDB shell version: 2.6.9
connecting to: 127.0.0.1:40000/admin
mongos> db.runCommand({addshard:"localhost:27017"})
{ "shardAdded" : "shard0000", "ok" : 1 }
mongos> db.runCommand({addshard:"localhost:27018"})
{ "shardAdded" : "shard0001", "ok" : 1 }
mongos> db.runCommand({enablesharding:"test"})
{ "ok" : 1 }
mongos> db.runCommand({shardcollection:"test.users",key:{id:1}})
{ "collectionsharded" : "test.users", "ok" : 1 }
mongos>

  

注意这里我们要注意片键的选择,选择片键时需要根据具体业务的数据形态来选择,切不可随意选择,实际中尤其不要轻易选择自增_id作为片键,除非你很清楚你这么做的目的,根据经验推荐一种较合理的片键方式,“自增字段+查询字段”。另外这里说明一点,分片的基本机制:分片总是试图将现有数据均分到所有的分片上。举例说,现在有两个分片,我已经选择了id作为片键,假定插入的id是自增的,如1——10000,则分片后的结果是均分,即1——5000在片A,5000——10000在片B,当然,不一定有这么精确,但却是保证尽量的平均的,以此类推,如果有三块分片,同样均分三等分。还需要说明的是,一开始插入数据时,数据是只插入到其中一块分片上的,插入完毕后,mongodb内部开始在各片之间进行数据的移动,这个过程可能不是立即的,mongodb足够智能会根据当前负载决定是立即进行移动还是稍后移动。
在插入数据后,立马执行db.users.stats();两次可以验证如上所说。

MongoDB分片配置系列一:的更多相关文章

  1. mongodb分片配置

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

  2. windows下的mongodb分片配置

    1. 分片服务器设置mongod -port 10001 -dbpath=F:/DbSoft/mongodb/rs_data/master -directoryperdb --shardsvr -re ...

  3. windows环境下Mongodb分片配置

    使用MongoDB的GridFS来存储文件,以前一直使用单个服务,分布式环境也一直没有配置成功,今天参考了几位大神的文章终于配置成功,再也不用担心文件存储的性能和安全啦.以下是自己部署的过程和示例,记 ...

  4. MongoDB分片配置 优化 不错

    简单注解:mongos 路由进程, 应用程序接入mongos再查询到具体分片,监听端口默认27017config server 路由表服务, 每一台都具有全部chunk的路由信息 shard为数据存储 ...

  5. MongoDB基础教程系列--第九篇 MongoDB 分片

    1.分片介绍 分片(sharding)是将数据拆分,将其分散存到不同机器上的过程.MongoDB 支持自动分片,可以使数据库架构对应用程序不可见.对于应用程序来说,好像始终在使用一个单机的 Mongo ...

  6. MongoDB Sharding分片配置

    Ps:mongod是mongodb实例,mongos被默认为为mongodb sharding的路由实例. 本文使用的mongodb版本为3.2.9,因此参考网址为:https://docs.mong ...

  7. mongodb数据库集群及sharding分片配置

    复制集群的配置 1.安装mongodb数据库 在主节点和从节点上都安装mongodb # rpm -ivh mongo-10gen-2.4.6-mongodb_1.x86_64.rpm mongo-1 ...

  8. mongoDB系列之(三):mongoDB 分片

    1. monogDB的分片(Sharding) 分片是mongoDB针对TB级别以上的数据量,采用的一种数据存储方式. mongoDB采用将集合进行拆分,然后将拆分的数据均摊到几个mongoDB实例上 ...

  9. 【MangoDB分片】配置mongodb分片群集(sharding cluster)

    配置mongodb分片群集(sharding cluster) Sharding cluster介绍 这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建monod ...

随机推荐

  1. 丑闻第三季 /全集Scandal迅雷下载

    丑闻 第三季 Scandal Season 3 (2013)本季看点:在经典美剧<老友记第一季>中饰演菲比的女星莉莎·库卓,即将加盟描写华府危机公关的ABC剧集<丑闻>(Sca ...

  2. 系统吞吐量、TPS(QPS)、用户并发量、性能測试概念和公式

    PS:以下是性能測试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高, ...

  3. C#多线程写日志

    由于程序是3层架构的,所有多线程记录日志成了比较棘手的问题,以前还真就没有在意过写日志的问题,认为不过是写文件罢了~~!如今发现原来要实现文件共享,并且能够使多线程同时操作日志还不能相互冲突,真的很麻 ...

  4. textrank的方法,大概懂了

    https://www.cnblogs.com/clover-siyecao/p/5726480.html 介绍了textrank. 不过我觉得对于长文本,textrank才有用些.短文本的话,估计没 ...

  5. Deformable Convolutional Networks-v1-v2(可变形卷积网络)

    如何评价 MSRA 视觉组最新提出的 Deformable ConvNets V2? <Deformable Convolutional Networks>是一篇2017年Microsof ...

  6. vNetwork Standard Switch(vSS)和vNetwork Distributed Switch(vDS)的区别

    vSS: vSwitches are configured on each ESXi/ESX host. vDS: The configuration of vDS is centralized to ...

  7. Populating Next Right Pointers in Each Node II leetcode java

    题目: Follow up for problem "Populating Next Right Pointers in Each Node". What if the given ...

  8. Openfire XMPP Smack RTC IM 即时通讯 聊天 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. mysql 字符串按照数字类型排序

    一个varchar,char的字段 存放 1+,12- ,11等字符串将字段*1或者+0可以将MySQL字符串字段按数值排序 order by 字段名称+0 desc/asc的形式进行排序 order ...

  10. Android -- SpannableString

    SpannableString Android通过SpannableString类来对EditText和TextView的指定文本进行处理. ForegroundColorSpan 文本颜色 priv ...