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

1dbpath=/data/mongodb/config1 2port=27037 3fork=true 4logpath=/data/mongodb/config1/config1.log 5replSet=configCluster 6configsvr=true 7 8# 节点2 config2-27038.conf 9dbpath=/data/mongodb/config2 10port=27038 11fork=true 12logpath=/data/mongodb/config2/config2.log 13replSet=configCluster 14configsvr=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# 节点1 shard1-27047.conf 2dbpath=/data/mongodb/shard1 3port=27047 4fork=true 5logpath=/data/mongodb/shard1/shard1.log 6shardsvr=true 7 8# 节点2 shard2-27048.conf 9dbpath=/data/mongodb/shard2 10port=27048 11fork=true 12logpath=/data/mongodb/shard2/shard2.log 13shardsvr=true 14 15# 节点3 shard3-27049.conf 16dbpath=/data/mongodb/shard3 17port=27049 18fork=true 19logpath=/data/mongodb/shard3/shard3.log 20shardsvr=true

添加分片信息。

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

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

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

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

1配置 路由节点 mongos ============== 2# 节点 route-27040.conf 3port=27040 4bind_ip=0.0.0.0 5fork=true 6logpath=/data/mongodb/route/route.log 7configdb=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

1for(var i=1;i<=100000;i++){ 2 3 db.emp.insert({"_id":i,"name":"copy"+i}); 4 5}

查看结果

可以看到分片的结果。

启动关闭

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

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

killall mongod

killall mongos

 

点赞
收藏

评论区

加载中...

相关推荐

NoSQL之MongoDB

1.mongodb介绍2.mongodb安装3.连接mongodb4.mongodb用户管理5.mongodb创建集合、数据管理6.php的mongodb扩展7.php的mongo扩展8.mongodb副本集介绍9.mongodb副本集搭建10.mongodb副本集测试11.mongodb分片介

MongoDb分片集群认证

本文主要基于已经搭建好的未认证集群,结合上篇Mongodb副本集分片集群模式环境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html),MongoDb分片集群认证几个主要流程1.在分片集群环境中,副本集内成员之间需要用keyFile认证,mongos与配置服务器,副本集之间也要keyFi

MongoDB DBA 实践8

在Linux系统中,主要是使用命令行进行mongodb的分片集群部署一、先决条件  mongodb安装成功,明确路径,MongoDB的几个路径:1./var/lib/mongodb2./var/log/mongodb3./etc/mongod.conf4.usr/bin/二、分片部署   

MongoDB 集群设置集合分片生效及查看集合分片情况

一、设计DB分片与Collection分片连接mongos/opt/mongodb/mongodblinuxx86_642.4.8/bin/mongo 127.0.0.1:27017使用admin数据库useadmin指定testdb分片生效db.runCommand({ena

MongoDB分片搭建

!(http://static.oschina.net/uploads/space/2015/1021/150555_H4rD_2426299.jpg)(http://static.oschina.net/uploads/space/2015/1021/150555_H4rD_2426299.jpg)·2015年度PG大象会报名地址:http

Mongodb集群搭建一篇就够了

本文主要介绍mongodb集群的搭建安装过程,对于学习mongodb的同学很有帮助,包括分片模式、复制集模式、是否启用认证等,本文选取mongodb3.6.3版本为例进行详细安装说明,其他版本搭建过程和本过程一样,只需按照本文说明操作即可。1.Mongodb分片集群架构