`

Mongodb数据分片的实现

 
阅读更多

副本集实现了网站的安全备份和故障的无缝转移,但是并不能实现数据的大容量存储,毕竟物理硬件是有极限的,这个时候就需要做分布式部署,把数据保存到其他机器上。Mongodb的分片技术就很完美的实现了这个需求。

 理解Mongodb的分片技术即Sharding架构

      什么是Sharding?说白了就是把海量数据水平扩展的集群系统,数据分表存储在Sharding的各个节点上。

      Mongodb的数据分开分为chunk,每个chunk都是collection中的一段连续的数据记录,一般为200MB,超出则生成新的数据块。

     构建Sharding需要三种角色,

          shard服务器(Shard Server):Shard服务器是存储实际数据的分片,每个Shard可以是一个mongod实例,也可以是一组mongod实例构成的Replica Sets,为了实现每个Shard内部的故障自动切换,MongoDB官方建议每个Shard为一组Replica Sets。

          配置服务器(Config Server):为了将一个特定的collection存储在多个Shard中,需要为该collection指定一个Shard key,决定该条记录属于那个chunk,配置服务器可以存储以下信息:

                                                1,所有Shard节点的配置信息

                                                2,每个chunk的Shard key范围

                                                3,chunk在各Shard的分布情况

                                                4,集群中所有DB和collection的Shard配置信息

          路由进程(Route Process):一个前端路由,客户端由此接入,首先询问配置服务器需要到那个Shard上查询或保存记录,然后连接相应Shard执行操作,最后将结果返回客户端。客户端只需 将原本发给mongod的查询活更新请求原封不动的发给路由器进程,而不必关心所操作的记录存储在那个Shard上。

 

   构建Sharding

     由上面分析可得出,构建一个Sharding至少需要4个mongodb进程,两个Shard Server(做分片),一个Config Server,一个Route Process,然后安排如下

             进程                端口     文件目录

            Shard Server1    2000    mongodb5

            Shard Server2    2001    mongodb6

            Config Server     30000    mongodb7

           Route Process     40000    mongodb8

      

  现在开始配置:

      1,启动Shard Server

这里启动只多了一个命令:shardsvr,用这个命令就表示这个进程是Shard进程。


2,启动Config Server

启动Config Server用的是configsvr命令

 

3,启动Route Process

 

这里设置chunk大小为1M,方便测试分片效果

 

4,配置Sharding

所有进程都启动好以后,剩余的就是把他们串成串儿了

 新开个cmd,然后连接到路由器进程中,使用addshard添加到路由器中

 

通过上面两次操作,整个架构已经串成了一串,但是,别着急,架构还不知道分片的数据库和片键呢

 

指定分片的数据库是Friends,然后指定按照表FriendUserAttach中的_id分片。

至此整个系统配置完毕。

验证分片情况,我是用程序插入的数据,因为表是我实际所用的表,在cmd里插入就太麻烦了,这里我用客户端驱动插入10000条数据

 

用use命令切换到Friends数据库,然后stats查看当前状态

字段说明:sharded为true,说明此表是经过分片处理的

              shards部分有两个Shard Server分别是:"shard0000" 和 "shard0001"。"shard0000"的字段count为1016,表明此Shard Server上分布的数据量是1016条,size表示此Shard Server上分布的数据库大小,单位为b。

 

转自 http://www.cnblogs.com/spnt/archive/2012/07/25/2608646.html

分享到:
评论

相关推荐

    MongoDB分片介绍

    - 数据集的分片通过`shardcollection`命令实现,指定要分片的集合和分片键。分片键决定了数据如何分布到各个分片。例如,`_id`字段常作为默认分片键。还可以设置`unique`属性,确保分片键的唯一性。 5. **操作命令...

    mongodb分片集群增加acl

    MongoDB分片集群是一种分布式数据存储结构,可以实现水平扩展。分片集群由三部分组成:mongos路由服务器、config配置服务器和多个分片节点。mongos作为路由服务器,负责接收客户端请求并将其转发到正确的分片。...

    k8s 安装 mongodb 分片(Sharding)+ 副本集(Replica Set)

    k8s 安装 MongoDB 分片(Sharding)+ 副本集(Replica Set)是结合 Kubernetes(k8s)和 MongoDB 实现高可用性和高性能的解决方案。本解决方案通过使用 Kubernetes 部署 MongoDB 分片(Sharding)和副本集(Replica ...

    mongodb分片设计

    MongoDB中的分片实现涉及到几个核心概念:分片(Shards)、配置服务器(Config Servers)以及分片集群行为(Sharded Cluster Behavior)。每个分片可以是一个单一的MongoDB服务器,也可以是一个副本集(Replica Set...

    mongodb中文API及分布式分片实例详解

    MongoDB通过分片实现水平扩展。 2. 设置分片集群:首先,需要启动配置服务器、分片服务器和路由进程。配置服务器存储分片信息,分片服务器承载数据,路由进程处理客户端请求并分发到正确分片。 3. 添加分片:使用`...

    mongodb分片

    MongoDB的分片技术是一种用于处理大数据量的分布式数据库策略,它通过将数据水平分割并分布在多个服务器上,以提高存储容量和数据处理性能。在MongoDB中,分片(Sharding)是解决大规模数据存储和高并发访问的有效...

    mongodb-测试数据

    5. **分片集群**:对于大规模数据,测试数据可能涉及分片配置,让你了解如何通过分片扩展数据库的存储和处理能力。 6. **性能基准测试**:可能包含用于性能基准测试的脚本,帮助你评估MongoDB在不同工作负载下的...

    mongoDB分片技术处理方案

    分片是将大型数据集分散到多个物理节点上的一种策略,每个节点存储数据的一部分,从而实现水平扩展。 一、MongoDB分片概念 1. 分片集群:由多个MongoDB服务器组成的系统,包括分片服务器、路由进程(Mongos)和配置...

    mongodb分片与副本集详细配置方案

    MongoDB 是一个高性能、分布式、开源的文档型数据库,它支持分片(sharding)和副本集(replica sets)来实现水平扩展和高可用性。分片是将数据分散到多个物理节点上,以处理大数据量和高并发场景;副本集则是为了...

    mongodb分片集群安装包

    2. **路由进程(Mongos)**:作为客户端与分片之间的路由器,处理查询路由、数据分片和数据迁移。客户端通过Mongos与集群交互,无需关心数据实际存储在哪个分片上。 3. **配置服务器(Config Server)**:存储关于...

    MongoDB分片详细教程

    MongoDB 分片是一种将数据分布在网络中的多个服务器上的方法。它通过水平分割数据来提高可伸缩性和性能,适用于处理大量数据和高并发访问场景。分片的核心组件包括**配置服务器(Config Server)**、**路由服务...

    配置mongodb分片群集(sharding cluster)

    在处理大数据或高并发场景时,MongoDB提供了分片(Sharding)功能,以实现水平扩展,满足大规模数据存储和处理的需求。本文将详细探讨如何配置MongoDB的分片集群。 **一、分片概念** 1. **分片(Sharding)**:在...

    一汽丰田数据湖环境mongoDB分片集群测试

    分片(Sharding)是MongoDB中的关键特性,它允许将大型数据集分布在多个物理节点上,每个节点存储数据的一部分,从而实现水平扩展。 在这个测试环境中,MongoDB 分片集群由三个分片复制集组成,每个复制集包含三个...

    Mongodb 集群分片部署.pdf

    MongoDB 分片集群部署是为了解决大数据量存储和高并发访问的问题,它将数据分布式地存储在多个服务器上,从而实现水平扩展。MongoDB 的分片机制允许数据自动分割成多个块(chunks),并将这些块分布在不同的节点上,...

    第5章 MongoDB分片.zip

    MongoDB是一种流行的开源文档数据库系统,以其高...通过以上内容,我们可以了解到MongoDB分片的基本概念、实现方式以及在实际应用中的重要性。理解并熟练掌握分片技术,对于构建高效、可扩展的数据库系统具有重要意义。

    MongoDB分片实例.pdf

    - **查看分片状态**:使用`printShardingStatus`命令检查数据分片情况。这将显示分片的数量、已分区的数据库、以及数据块(chunks)的分布情况。 4. **分片效果分析** - **shards**:展示当前分片集群中的分片...

    MongoDB分片实现深度解析:构建水平扩展的数据存储

    4. **高可用性**:通过副本集(Replica Sets)实现,副本集是一组维护相同数据集的MongoDB服务器,可以提供数据的高可用性和自动故障转移。 5. **丰富的查询语言**:MongoDB提供了一个强大的查询语言,支持文档的...

    Mongodb分片副本集集群搭建

    1. MongoDB分片架构的基本组成:MongoDB分片架构由mongos(路由服务器)、config-server(配置服务器)和shard(分片服务器)三部分组成。mongos负责作为客户端请求的入口路由,config-server同步集群信息,shard...

    2012 最新的mongodb sharding配置步骤 权威指南 分片步骤

    在处理海量数据时,为了提高性能和可扩展性,MongoDB 提供了分片(Sharding)功能,即将数据分散到多个物理节点上,实现水平扩展。本文将详细介绍2012年最新的MongoDB分片配置步骤,适用于权威的MongoDB环境搭建。 ...

    配置mongodb分片群集1

    总之,MongoDB分片群集是应对大数据场景的强大工具,它通过将数据分散在多个节点上,实现了横向扩展,保证了系统的高性能和高可用性。正确配置和管理分片群集是确保MongoDB在大规模环境中有效运行的关键。

Global site tag (gtag.js) - Google Analytics