分片(即sharding)是将数据拆分至不同数据节点的方式。

1、在mongoDB中提供了自动分片的方式,它会根据数据块(chunk)大小的设定,对片键进行拆分;

2、mongoDB配置分片,要配置三类节点,包括:

  2.1 配置节点:存储分片的配置信息,包括由哪些分片、chunk信息等;

  2.2 路由节点:配置完分片后,所有的SQL操作都通过该路由节点,由该路由节点路由至不同的数据节点;

  2.3 分片节点:即数据节点,存储拆分后的数据;分片节点可以使一个普通的数据节点也可以使一个副本集;

下文记录在单机下,配置一个基本的sharding,

配置环境,操作系统: windows 7, mongodb版本: 2.6.4

1、创建文件夹目录 ../dbs/config ../dbs/shard1 ../dbs/shard2

2、启动配置节点  mongod.exe --dbpath ../dbs/config --port 10000

3、启动路由节点 mongod.exe --port 20000 --configdb localhost:10000 --chunksize 1

备注:此处将路由节点与配置节点关联,同时设置chunksize大小,为测试起见设置为1M

4、启动分片节点

mongod.exe --dbpath ../dbs/shard1 --port 30000

mongod.exe --dbpath ../dbs/shard2 --port 40000

5、登陆路由节点,进行配置

mongo.exe localhost:20000

use admin

db.runCommand({"addshard":“localhost:30000”})

db.runCommand({"addshard":"localhost:40000"})//增加分片

db.runCommand({"enablesharding":"test"}); //设置test库为可分片

db.runCommand({"shardcollection":"test.user","key":{"age":1}}); //设置test库中的user集合中age字段为片键

6、测试

登陆路由节点,在该节点中插入大量数据,如20000条use记录,

此时登陆两个数据节点,可以发现皆有数据。

在路由节点中输入命令db.user.stats(),可以查看具体状态,如下:

备注:

一、在实际测试中,我发现该状态是改变的,

1、当未有数据插入时,shards中只有shard0000;此时shard0001中无test数据库;

2、当插入数据到一定量时,shards中有shard0000和shard0001,但此时实际的shard0001的数据库只是建立了test库和user集合,无数据;

3、当再次插入数据时,shard0001中的test库开始可以查到数据;

个人理解如下:

mongodb在shard时会有一个预留量,即当第一个chunk快用完时,会提前准备新的chunk。

二、登陆config节点可以查找相关的配置表,在其config数据库下:

mongodb(分片)的更多相关文章

  1. MongoDB 分片管理(不定时更新)

    背景: 通过上一篇的 MongoDB 分片的原理.搭建.应用 大致了解了MongoDB分片的安装和一些基本的使用情况,现在来说明下如何管理和优化MongoDB分片的使用. 知识点: 1) 分片的配置和 ...

  2. MongoDB 分片的原理、搭建、应用

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

  3. MongoDB分片简单实例

    分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据也足以提供可接受的读写吞吐量.这时,我 ...

  4. (转)MongoDB分片实战 集群搭建

    环境准备 Linux环境 主机 OS 备注 192.168.32.13 CentOS6.3 64位 普通PC 192.168.71.43 CentOS6.2 64位 服务器,NUMA CPU架构 Mo ...

  5. 搭建mongodb分片

    搭建mongodb分片 http://gong1208.iteye.com/blog/1622078 Sharding分片概念 这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在shardi ...

  6. mongodb分片

    在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,他不能解决海量数据怎么行!不行!“分片”就用这个来 ...

  7. mongodb 分片群集(sharding cluster)

    实际环境架构 分别在3台机器运行一个mongod实例(称为mongod shard11,mongod shard12,mongod shard13)组织replica set1,作为cluster的s ...

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

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

  9. mongodb分片部署

    Mongodb 分片部署 配置mongodb集群,比如 在3个server上配置 3 shard的Mongodb集群: 架构: 1.每片数据需要3个mongod server,2个为主从数据节点:1个 ...

  10. MongoDB分片原理篇

    MongoDB分片 为什么需要Sharded cluster? MongoDB目前3大核心优势:『灵活模式』+ 『高可用性』 + 『可扩展性』,通过json文档来实现灵活模式,通过复制集来保证高可用, ...

随机推荐

  1. Modern C++ CHAPTER 2(读书笔记)

    CHAPTER 2 Recipe 2-1. Initializing Variables Recipe 2-2. Initializing Objects with Initializer Lists ...

  2. 快速排序 - C语言

    看了这本<数据结构与算法分析>中的快速排序. 写下自己理解后的代码,以备后用. #include "stdio.h" void insertSort(int arr[] ...

  3. sql报句柄无效。 (异常来自 HRESULT:0x80070006 (E_HANDLE))

    是由于数据库连接资源被耗尽或者用完没被释放导致的. 我在字符串中加了启用连接池好了. 如果错误信息为:sql 无效操作.连接被关闭 也是这个问题导致的.

  4. 一个CURL

    CURL curl是利用url语法规则来传输文件,数据的工具,主要实现和服务器中网页,资源传输的工具.这里有一个关于感冒还没好的段子. 1.去phpini开启curl扩展,重启阿帕奇或者配置环境变量或 ...

  5. 无域环境下,VCENTER5.5 更改IP后 无法登陆异常修复

    转自http://bbs.vmsky.com/forum.php?mod=viewthread&tid=45593&highlight=vcenter%2Bip 由于没有域环境,SSO ...

  6. Thinkphp去掉index.php

    1.httpd.conf配置文件中 #LoadModule rewrite_module modules/mod_rewrite.so 把前面的警号去掉2.AllowOverride None 将No ...

  7. nopcommerce之一(结构分析)

    公司的项目,基于nopcommerce开发.接触项目至今已经快一个月了,对nopcommerce这个开源框架整个结构比较熟悉了.这个框架主要要知道三个文件夹,分别是Libraries.Plugins和 ...

  8. CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Html、Ajax”(是否缺少程序集引用?)

    从SVN上down下来的程序,编译报了一大堆的错,发现是缺少引用,但是明明引用了,后来打开引用,发现system.web.mvc这个引用打着叹号,如图: 后来重新引用了本机的system.web.mv ...

  9. IOS调用WCF服务,WCF服务器进行上传图片

    1.IOS端采用post方式请求服务器端的url地址 如:http://192.168.0.12:50000/serverce1.svc/upload IOS端的代码采用base64位编码的方式传值给 ...

  10. PHP导出大量数据到excel表格

    /** * @creator Jimmy * @data 2016/8/22 * @desc 数据导出到excel(csv文件) * @param $filename 导出的csv文件名称 如date ...