MongoDB 分片搭建

MongoDB 已经到了第三篇,同时也是搭建的最后一篇文章了。

MongoDB 的分片搭建。

为什么使用分片?

我们为什么要使用分片呢? 因为现在的数据量越来越大了,为了扩大DB 的性能 以及吞吐量。

MongoDB 分片构架

A MongoDB sharded cluster consists of the following components:

  • shard: Each shard contains a subset of the sharded data. Each shard can be deployed as a replica set.
  • mongos: The mongos acts as a query router, providing an interface between client applications and the sharded cluster.
  • config servers: Config servers store metadata and configuration settings for the cluster. As of MongoDB 3.4, config servers must be deployed as a replica set (CSRS).

从官网可以看到Mongo DB 分片集群 包括3个部分:

分片节点:真正存储数据的节点

mongos:用处仅仅是用来做路由的,进行客户端和数据库端的连接

config servers:存储一些元数据和配置的信息。从3.4 开始Config 必须是集群的。

下面是配置图:

概念

Shard Keys:

就是分片的key,把相同规则的key 放到同样的分片中,这样在查找数据的时候可以快速的找到。

Chunks

每个分片的大小限制,当一个分片满的时候,会自动向下一个分片进入书写,默认64M。

分片搭建

好了开始我们的搭建之旅吧。

1)配置并启动config节点。

注意Configsvr 这个配置


# 节点1 config1-27037.conf

dbpath=/data/mongodb/config1
port=27037
fork=true
logpath=/data/mongodb/config1/config1.log
replSet=configCluster
configsvr=true
# 节点2 config2-27038.conf
dbpath=/data/mongodb/config2
port=27038
fork=true
logpath=/data/mongodb/config2/config2.log
replSet=configCluster
configsvr=true

启动 并放入集群中。

进入客户端:

  • ./bin/mongo -port 27037
  • 写入配置文件。
var cfg ={"_id":"configCluster",
          "protocolVersion" : 1,
          "members":[
                {"_id":0,"host":"127.0.0.1:27037"},
                {"_id":1,"host":"127.0.0.1:27038"}
            ]
         }
  • 初始化配置rs.initiate(cfg)

配置成功可以看到configsvr = true

2) 分片节点

shardsvr

# 节点1 shard1-27047.conf
dbpath=/data/mongodb/shard1
port=27047
fork=true
logpath=/data/mongodb/shard1/shard1.log
shardsvr=true

# 节点2 shard2-27048.conf
dbpath=/data/mongodb/shard2
port=27048
fork=true
logpath=/data/mongodb/shard2/shard2.log
shardsvr=true

# 节点3 shard3-27049.conf
dbpath=/data/mongodb/shard3
port=27049
fork=true
logpath=/data/mongodb/shard3/shard3.log
shardsvr=true

添加分片信息。

因为在运行addShard的时候必须要连接到路由节点了,所以我们先开启路由节点

3.开启路由配置路由节点

发现没? 路由节点少了dbpath  证明路由节点不会进行存储数据。

但是多了一个信息,是configdb,是存储config 节点的信息

配置 路由节点 mongos ==============
# 节点 route-27040.conf
port=27040
bind_ip=0.0.0.0
fork=true
logpath=/data/mongodb/route/route.log
configdb=configCluster/127.0.0.1:27037,127.0.0.1:27038

启动

./bin/mongos -f conf/mongo-27040.cfg   注意这里要用mongos。

// 添加分片节点

登录Mongos 节点

sh.status()

sh.addShard("127.0.0.1:27047");

sh.addShard("127.0.0.1:27048");

sh.addShard("127.0.0.1:27049");

这个时候就可以看到三个分片啦。

为数据库开启分片功能

sh.enableSharding("myth")

为指定集合开启分片功能

sh.shardCollection("myth.emp",{"_id":1})

插入数据 测试:

为了方便,我们把chunk 改小,为了快速的分片。

use config

 db.settings.find()

db.settings.save({_id:"chunksize",value:1})

这个时候我们循环插入10万条数据,看下有没有分片。

use myth

for(var i=1;i<=100000;i++){

     db.emp.insert({"_id":i,"name":"copy"+i});

}

查看结果

可以看到分片的结果。

启动关闭

mongodb的启动顺序是,先启动配置服务器,在启动分片,最后启动mongos.

关闭时,直接killall杀掉所有进程

killall mongod

killall mongos

原文地址:https://www.cnblogs.com/mythdoraemon/p/10306799.html

时间: 2024-09-30 12:34:40

MongoDB 分片搭建的相关文章

MongoDB分片搭建

一.环境 $ cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) $ uname -a Linux zhaopin-2-201 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux $ mongo --version MongoDB shell version: 3.0.6 二.配置Shard Serve

搭建mongodb分片

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

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

一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分.通过一个名为mongos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器).大部分使用场景都是解决磁盘空间的问题,对于写入有可能会变差(+++里面的说明+++),查询则尽量避免跨分片查询.使用分片的时机: 1,机器的磁盘不够用了.

MongoDB 分片的原理、搭建、应用 !

一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移).通过一个名为mongos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器).大部分使用场景都是解决磁盘空间的问题,对于写入有可能会变差(+++里面的说明+++),查询则尽量避免跨

MongoDB分片实战

MongoDB分片实战(一):集群搭建 http://www.cnblogs.com/magialmoon/archive/2013/04/10/3013121.html MongoDB分片实战(二):Sharding http://www.cnblogs.com/zhanjindong/archive/2013/04/11/3015394.html MongoDB分片实战(三):性能和优化 http://www.cnblogs.com/zhanjindong/archive/2013/04/1

MongoDB分片存储的集群架构实现

MongoDB分片存储的集群架构实现 如果需要存储大量数据,或者系统的读写吞吐量很大的时候,单个server就很难满足需求了.这个时候我们可以使用MongoDB的分片机制来解决这些问题. 分片的基本概念 分片(sharding)是一种水平扩展(horizontal scaling)的方式,把一个大的数据集分散到多个片服务器上,所有的片服务器将组成一个逻辑上的数据库来存储这个大的数据集.分片对用户(应用层)是透明的,用户不会知道数据很被存放到哪个片服务器上. 这种方式有两个好处: 分片之后,每个片

NoSql数据库初探-mongoDB环境搭建

NoSQL数据库一改关系型数据库的缺点,更容易的集成.分布式.无模式.故障恢复等特点,正在一步步餐食关系型数据库的市场,作为一个与时俱进的码农了解一下新技术是必须的,尤其是在读了<NoSql精粹>之后,更是想体验一下NoSql数据库的威力. MongoDB是一种文档数据库,也就是说对于领域模型中的每一个聚合来讲,都会作为一个文档来存储. MongoDB有如下优点: 面向文档存储.全索引支持.同步机制和高访问性.自动分片.查询.灵活的聚集和数据处理.映射化简.文件存储.   第一步:安装 从版本

MongoDB 分片集群实战

背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁盘,此种方法虽然成本很高,但是实现比较简单,维护起来也比较方便. 水平扩展:通过使用更多配置一般的服务器来共同承担工作负载,此种方法很灵活,可以根据工作负载的大小动态增减服务器的数量,但是实现比较复杂,得有专门的人员来运维. Databases for MongoDB 试用 IBM Cloud 上提

mongoDB(三) mongoDB分片集群

mongoDB分片集群 介绍 解决数据分片,防止数据丢失生产环境需要擦用分片+副本集的部署方式 组成部分 route: 提供入口,不存储数据 configserver: 存储元数据信息,建议使用副本集 shardserver: 数据存储服务,存储真正数据, 也许要使用副本集 依赖关系 当数据插入时,需要从configsrv知道数据要插入哪个shardsrv分片 当用户获取数据时,需要从configsrv知道数据存储在哪个shardsrv分片 集群搭建 使用同一份mongodb二进制文件 修改对应