MongoDB 分片搭建

Wesley13
• 阅读 672

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 必须是集群的。

下面是配置图:

MongoDB 分片搭建

概念

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

MongoDB 分片搭建

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");

MongoDB 分片搭建

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

为数据库开启分片功能

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 分片搭建

启动关闭

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

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

killall mongod

killall mongos

 MongoDB 分片搭建

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
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分片介
Stella981 Stella981
3年前
MongoDb分片集群认证
本文主要基于已经搭建好的未认证集群,结合上篇Mongodb副本集分片集群模式环境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html),MongoDb分片集群认证几个主要流程1.在分片集群环境中,副本集内成员之间需要用keyFile认证,mongos与配置服务器,副本集之间也要keyFi
Wesley13 Wesley13
3年前
MongoDB DBA 实践8
在Linux系统中,主要是使用命令行进行mongodb的分片集群部署一、先决条件  mongodb安装成功,明确路径,MongoDB的几个路径:1./var/lib/mongodb2./var/log/mongodb3./etc/mongod.conf4.usr/bin/二、分片部署   
Wesley13 Wesley13
3年前
MongoDB 集群设置集合分片生效及查看集合分片情况
一、设计DB分片与Collection分片连接mongos/opt/mongodb/mongodblinuxx86_642.4.8/bin/mongo 127.0.0.1:27017使用admin数据库useadmin指定testdb分片生效db.runCommand({ena
Wesley13 Wesley13
3年前
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
Stella981 Stella981
3年前
Mongodb集群搭建一篇就够了
本文主要介绍mongodb集群的搭建安装过程,对于学习mongodb的同学很有帮助,包括分片模式、复制集模式、是否启用认证等,本文选取mongodb3.6.3版本为例进行详细安装说明,其他版本搭建过程和本过程一样,只需按照本文说明操作即可。1.Mongodb分片集群架构
Wesley13 Wesley13
3年前
MongoDB 分片管理
背景:   通过上一篇的 MongoDB分片的原理、搭建、应用(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.cnblogs.com%2Fzhoujinyi%2Fp%2F4635444.html) 大致了解了MongoDB分片的安装和一些基本的使用情况,现在来
Wesley13 Wesley13
3年前
MongoDB分片介绍
本文简单介绍MongoDB的分片功能,对分片进行了概述,具体的功能详解,后续文章会陆续推出分片是把数据分配到多个服务器上的一种方式,MongoDB使用分片实现大数据部署以及高吞吐操作。大数据以及高吞吐量的应用会对单个服务器的容量造成很大的挑战。比如,高频率的查询操作会消耗服务器的CPU,如果数据集大于系统的RAM容量,也会对硬盘的性能造成影响。应
可莉 可莉
3年前
21.40 mongodb分片测试
21.40mongodb分片测试分片搭建–测试登录任何一台20000端口mongoport20000useadmindb.runCommand({enablesharding:"testdb"})或者sh.enableSharding("testdb"
Wesley13 Wesley13
3年前
MongoDB 分片1
第一步:准备数据节点必须添加–shardsvr参数。\html\ viewplain(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2Fmlz_2%2Farticle%2Fdetails%2F71703153%23)copy