接这篇博客:

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. Linux内核:分析coredump文件 - 内核代码崩溃

    转自:http://blog.csdn.net/guowenyan001/article/details/12975221 一.分析Core文件 1.1 找到core文件目录,启动mycrash:my ...

  2. git服务器的建立——Git折腾小记

    转自:http://blog.csdn.net/xsl1990/article/details/25486211 如果你能看到一些sshd相关的进程信息,则说明你已经有这个服务了,否则(或者你想更新的 ...

  3. resin 4.0.xx 版破解方法

    how to crack resin 4.0.2x resin 4.0.3x. 工具:jd http://jd.benow.ca/ 利用jd打开resin 4.0.xx目录下的lib/pro.jar ...

  4. HTML5+Java(Spring下) 拍照上传图片

    使用支持html5的浏览器,找个有摄像头,再建一个文件接收base64字串的图片然后保存就哦了 <html> <head runat="ReYo-Server"& ...

  5. Gallery和自定义Adapter配合使用,实现图片预览

    Gallery是一个可以拖动的列表,正中对应的是选中的东西.他和spinner有共同的父类:AbsSpinner 属性: android:animationDuration="1000&qu ...

  6. asp.net 判断用户是否使用微信浏览器

    平时我们看一些网页的时候会发现这样的功能:有的页面只能在微信里访问,如果在电脑上访问就提示用户请到微信上访问该网页.这个用C#怎么实现呢?我们结合代码来看看. 首先,我们需要先判断用户使用的是什么浏览 ...

  7. c# 正则表达式笔记

    估计要写几天 看得一个不错的正则教程包括字符串教程 C#字符串和正则表达式参考手册.pdf 正则所需要的命名空间是 using System.Text.RegularExpressions 它包含了8 ...

  8. 网页重构应该避免的10大 CSS 糟糕用法

    对于网页重构来说,CSS禅意花园 是网页布局从 table 表格转到了 html +css 的标志 .这些年来,随着我们的网站越来越复杂:html5,css3,新的技术.新的属性,越来越多的开发者开始 ...

  9. Kudu-java数据库简单操作

    参考官网:http://kudu.apache.org/docs/kudu_impala_integration.html 参考:https://my.oschina.net/weiqingbin/b ...

  10. ProBase

    http://haixun.olidu.com/probase.html A Data Driven Semantic Network for Text Understanding Probase i ...