分片

在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。

当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。

为什么使用分片?

1. 复制所有的写入操作到主节点
    2. 延迟的敏感数据会在主节点查询
    3. 单个副本集限制在12个节点
    4. 当请求量巨大时会出现内存不足。
    5. 本地磁盘不足
    6. 垂直扩展价格昂贵

aaarticlea/png;base64,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" alt="" />

Shard:
    用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障

Config Server:
    mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。

Query Routers:
    前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

分片实例:
    node1:10.0.0.10 -- 3个Config Server、1个Routers、1个Shard
    node2:10.0.0.11 -- 1个Routers、1个Shard
    node3:10.0.0.12 -- 1个Shard

注意:在做分片的时候,要避免Shard在同一台主机上,这样就没办法实现分片。

node1 配置如下:

三个Shard 的配置文件:

[root@node1 conf]# ls
mongosvr-.conf mongosvr-.conf mongosvr-.conf
[root@node1 conf]# vim mongosvr-.conf systemLog:
destination: file
###日志存储位置
path: /mongodb/logs/mongosvr-.log
logAppend: true
storage:
##journal配置
journal:
enabled: true
##数据文件存储位置
dbPath: /mongodb/data/mongosvr-
##是否一个库一个文件夹
directoryPerDB: true
##数据引擎
engine: wiredTiger
##WT引擎配置
wiredTiger:
engineConfig:
##WT最大使用cache(根据服务器实际情况调节)
cacheSizeGB:
##是否将索引也按数据库名单独存储
directoryForIndexes: true
##表压缩配置
collectionConfig:
blockCompressor: zlib
##索引配置
indexConfig:
prefixCompression: true
processManagement:
fork: true # fork and run in background
pidFilePath: /mongodb/socket/mongodsvr-.pid
##端口配置
net:
port:
bindIp: 10.0.0.10
sharding:
clusterRole: configsvr # 启动config服务
[root@node1 ~]# mongod -f /mongodb/conf/mongosvr-.conf
about to fork child process, waiting until server is ready for connections.
forked process:
child process started successfully, parent exiting [root@node1 conf]# netstat -ntplu | grep mongod
tcp 10.0.0.10: 0.0.0.0:* LISTEN /mongod
tcp 10.0.0.10: 0.0.0.0:* LISTEN /mongod
tcp 10.0.0.10: 0.0.0.0:* LISTEN /mongod

创建mongos服务

[root@node1 conf]# vim mongos-.conf 

systemLog:
destination: file
###日志存储位置
path: /mongodb/logs/mongos-.log
logAppend: true
processManagement:
fork: true # fork and run in background
pidFilePath: /mongodb/socket/mongos-.pid
##端口配置
net:
port:
bindIp: 10.0.0.10 ## 将confige server 添加到路由
sharding:
configDB: 10.0.0.10:,10.0.0.10:,10.0.0.10:

启动路由服务

[root@node1 conf]# mongos -f /mongodb/conf/mongos-.conf
about to fork child process, waiting until server is ready for connections.
forked process:
child process started successfully, parent exiting [root@node1 conf]# netstat -ntplu | grep mongos
tcp 10.0.0.10: 0.0.0.0:* LISTEN /mongos

在开启一个Shard服务

配置:
[root@node1 conf]# ls
mongod-.conf mongos-.conf mongosvr-.conf mongosvr-.conf mongosvr-.conf
[root@node1 conf]# vim mongod-.conf systemLog:
destination: file
###日志存储位置
path: /mongodb/logs/mongod-.log
logAppend: true
storage:
##journal配置
journal:
enabled: true
##数据文件存储位置
dbPath: /mongodb/data/mongod-
##是否一个库一个文件夹
directoryPerDB: true
##数据引擎
engine: wiredTiger
##WT引擎配置
wiredTiger:
engineConfig:
##WT最大使用cache(根据服务器实际情况调节)
cacheSizeGB:
##是否将索引也按数据库名单独存储
directoryForIndexes: true
##表压缩配置
collectionConfig:
blockCompressor: zlib
##索引配置
indexConfig:
prefixCompression: true
processManagement:
fork: true # fork and run in background
pidFilePath: /mongodb/socket/mongod-.pid
##端口配置
net:
port:
bindIp: 10.0.0.10 # 启动Shard服务 [root@node1 conf]# mongod -f /mongodb/conf/mongod-.conf
about to fork child process, waiting until server is ready for connections.
forked process:
child process started successfully, parent exiting

node1 节点服务配置完毕。

node2 配置1个router、1个Shard
node3 配置1个Shard

配置如同node1一样,这里不在贴代码。

node1:
[root@node1 ~]# netstat -ntplu | grep mongo.
tcp 10.0.0.10: 0.0.0.0:* LISTEN /mongod
tcp 10.0.0.10: 0.0.0.0:* LISTEN /mongod
tcp 10.0.0.10: 0.0.0.0:* LISTEN /mongod
tcp 10.0.0.10: 0.0.0.0:* LISTEN /mongos
tcp 10.0.0.10: 0.0.0.0:* LISTEN /mongod node2:
[root@node2 ~]# netstat -ntplu | grep mongo.
tcp 10.0.0.11: 0.0.0.0:* LISTEN /mongod
tcp 10.0.0.11: 0.0.0.0:* LISTEN /mongos node3:
[root@node3 ~]# netstat -ntplu | grep mongo.
tcp 10.0.0.12: 0.0.0.0:* LISTEN /mongod

接下来需要在node1上进行分片的配置:

[root@node1 ~]# mongo 10.0.0.10:

mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : ,
"minCompatibleVersion" : ,
"currentVersion" : ,
"clusterId" : ObjectId("57b1addb0a3c54686427f812")
}
shards: # 目前还没有节点加入到分片中
active mongoses:
"3.2.8" :
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last attempts:
Migration Results for the last hours:
No recent migrations
databases: # 添加新的分片
mongos> sh.addShard('10.0.0.10:40000')
{ "shardAdded" : "shard0000", "ok" : }
mongos> sh.addShard('10.0.0.11:40000')
{ "shardAdded" : "shard0001", "ok" : }
mongos> sh.addShard('10.0.0.12:40000')
{ "shardAdded" : "shard0002", "ok" : } mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : ,
"minCompatibleVersion" : ,
"currentVersion" : ,
"clusterId" : ObjectId("57b1addb0a3c54686427f812")
}
shards: # 这里就可以看到刚才添加的三个Shard节点
{ "_id" : "shard0000", "host" : "10.0.0.10:40000" }
{ "_id" : "shard0001", "host" : "10.0.0.11:40000" }
{ "_id" : "shard0002", "host" : "10.0.0.12:40000" }
active mongoses:
"3.2.8" :
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last attempts:
Migration Results for the last hours:
No recent migrations
databases:

注意:分片的功能是需要手动开启才能实现的:sh.enableSharding("库名")、sh.shardCollection("库名.集合名",{"key":1})

mongos> sh.enableSharding('testdb')
{ "ok" : }
mongos> sh.shardCollection('testdb.users',{uid:})
{ "collectionsharded" : "testdb.users", "ok" : }
mongos> show dbs
config .001GB
testdb .000GB
mongos> use testdb
switched to db testdb
mongos> for(i=;i<=;i++) db.users.insert({uid:i,name:'hukey',age:}) # 生成20W条数据,并且通过uid来进行分片
WriteResult({ "nInserted" : })

# 分片的规则是自动分裂和平衡。

数据生成完毕,我们可以通过node2的router服务登录上去查看。

mongos> db.users.count()

mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : ,
"minCompatibleVersion" : ,
"currentVersion" : ,
"clusterId" : ObjectId("57b1addb0a3c54686427f812")
}
shards:
{ "_id" : "shard0000", "host" : "10.0.0.10:40000" }
{ "_id" : "shard0001", "host" : "10.0.0.11:40000" }
{ "_id" : "shard0002", "host" : "10.0.0.12:40000" }
active mongoses:
"3.2.8" :
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last attempts:
Migration Results for the last hours:
: Success
databases:
{ "_id" : "testdb", "primary" : "shard0000", "partitioned" : true }
testdb.users
shard key: { "uid" : }
unique: false
balancing: true
chunks: # 这里可以查看到平均分片到每个Shard上。
shard0000
shard0001
shard0002
{ "uid" : { "$minKey" : } } -->> { "uid" : } on : shard0001 Timestamp(, )
{ "uid" : } -->> { "uid" : } on : shard0002 Timestamp(, )
{ "uid" : } -->> { "uid" : { "$maxKey" : } } on : shard0000 Timestamp(, )

mongodb是用来存储海量数据的,所以20W分片可能不是特别明显,可以每次增加10W条来查看。

            chunks:
shard0000
shard0001
shard0002
{ "uid" : { "$minKey" : } } -->> { "uid" : } on : shard0001 Timestamp(, )
{ "uid" : } -->> { "uid" : } on : shard0002 Timestamp(, )
{ "uid" : } -->> { "uid" : } on : shard0002 Timestamp(, )
{ "uid" : } -->> { "uid" : } on : shard0000 Timestamp(, )
{ "uid" : } -->> { "uid" : } on : shard0000 Timestamp(, )
{ "uid" : } -->> { "uid" : } on : shard0000 Timestamp(, )
{ "uid" : } -->> { "uid" : { "$maxKey" : } } on : shard0001 Timestamp(, )

这样,就很明显了。分片集群搭建完毕,但是目前所有节点都是单点,一旦故障就造成很严重的后果,因此需要将分片和副本集联合起来用,才能实现高可用。

[ MongoDB ] 分片集群及测试的更多相关文章

  1. MongoDB分片集群原理、搭建及测试详解

    随着技术的发展,目前数据库系统对于海量数据的存储和高效访问海量数据要求越来越高,MongoDB分片机制就是为了解决海量数据的存储和高效海量数据访问而生. MongoDB分片集群由mongos路由进程( ...

  2. CentOS7+Docker+MangoDB下部署简单的MongoDB分片集群

    简单的在Docker上快速部署MongoDB分片集群 前言 文中使用的环境如下 OS:CentOS Linux release 7.5.1804 (Core) Docker:Docker versio ...

  3. 分布式文档存储数据库之MongoDB分片集群

    前文我们聊到了mongodb的副本集以及配置副本集,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13953598.html:今天我们来聊下mongodb的分片 ...

  4. mongodb分片集群

    第一章 1.mongodb 分片集群解释和目的 一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合.复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础. 第二章 1. ...

  5. TiDB和MongoDB分片集群架构比较

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近阅读了TiDB源码的说明文档,跟MongoDB的分片集群做了下简单对比. 首先展示TiDB的整体架构 M ...

  6. 搭建MongoDB分片集群

    在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...

  7. 网易云MongoDB分片集群(Sharding)服务已上线

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. MongoDB sharding cluster(分片集群)是MongoDB提供的数据在线水平扩展方案,包括 ...

  8. MongoDB 分片集群实战

    背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁 ...

  9. Windows 搭建MongoDB分片集群(二)

    在本篇博客中我们主要讲描述分片集群的搭建过程.配置分片集群主要有两个步骤,第一启动所有需要的mongod和mongos进程.第二步就是启动一个mongos与集群通信.下面我们一步步来描述集群的搭建过程 ...

随机推荐

  1. POJ 1149 PIGS(最大流)

    Description Mirko works on a pig farm that consists of M locked pig-houses and Mirko can't unlock an ...

  2. 软件工程项目组Z.XML会议记录 2013/09/18

    软件工程项目组Z.XML会议记录 [例会时间]2013年9月18日周三21:00-23:00 [例会形式]小组讨论 [例会地点]三号公寓楼会客厅 [例会主持]李孟 [会议记录]毛宇 会议整体流程 一. ...

  3. 【iOS开发】iOS对UIViewController生命周期和属性方法的解析

    iOS对UIViewController生命周期和属性方法的解析 一.引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有 ...

  4. bbbbbeta

    about beta 写在开头:(小声bb,无任何专业知识) 好了正文开始了 = = beta冲刺对于来说可能是让我觉得非常有成就感的叭,相比于alpha,每天都能写代码的感觉真好鸭(认真脸)(虽然天 ...

  5. [BinaryTree] 二叉搜索树(二叉查找树、二叉排序树)

    二叉查找树(BinarySearch Tree,也叫二叉搜索树,或称二叉排序树BinarySort Tree)或者是一棵空树,或者是具有下列性质的二叉树: (1)若它的左子树不为空,则左子树上所有结点 ...

  6. Nginx学习笔记之加强篇

    在上一篇文章Nginx学习笔记之应用篇中,我们已经可以正式运行自己的网站了.但是在使用Nginx服务器时还需要注意几个问题: 1.Nginx服务器上配置的单个站点的并发量不超过1024 2.Nginx ...

  7. P1368 工艺

    题目描述 小敏和小燕是一对好朋友. 他们正在玩一种神奇的游戏,叫Minecraft. 他们现在要做一个由方块构成的长条工艺品.但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方 ...

  8. BZOJ4568 [Scoi2016]幸运数字 【点分治 + 线性基】

    题目链接 BZOJ4568 题解 选任意个数异或和最大,使用线性基 线性基插入\(O(logn)\),合并\(O(log^2n)\) 我们要求树上两点间异或和最大值,由于合并是\(O(log^2n)\ ...

  9. [bzoj1033] [ZJOI2008]杀蚂蚁 Big MoNI

    这个模拟就不用说了吧...... 注意事项(救命的):1.不能回原位 2.在可以打到target的塔打target的时候,其他打不到的继续打自己的(这是显然的事情只是当时已惘然) 3.如果游戏在某一秒 ...

  10. Android-使用ViewFlipper实现轮番切换广告栏

    所谓的轮番切换广告栏,指的是下面这个东西,笔主不知道该怎么确切描述这货... 笔主没有百度研究过其他大牛是怎么实现这个功能的,在这里笔主充分发挥DIY精神,利用ViewFlipper闭门土制了一个,下 ...