设为首页 加入收藏

TOP

MongoDB集群架构之分片架构(一)
2018-10-23 00:06:06 】 浏览:220
Tags:MongoDB 集群 架构 分片

本文介绍了热门的NoSQL数据库Mongodb的分片架构模式的相关概念以及分片环境搭建方法。分片就是在分布式数据架构中常见的Sharding这个词。Mongodb分片的方式包括范围分片、哈希分片和标签分片三种。


1.分片相关概念


Mongodb分片是什么?


分片即sharding。在Mongodb中,一个集合可以根据特定的规则将其数据分成几个不同的部分,然后每个组成部分分布在不同的Mongodb服务器上。在查询时,自动从这些组成部分中查询并给给出汇总结果。


分片跟副本集是不同的概念。


分片后,每个服务器上的数据只是一个集合的一部分数据,必须将所有服务器上的数据集中后才能得到完整的数据。


副本集方式部署时,每个服务器上的数据都是完整的,不需要汇总即可得到一个集合的完整数据。


分片方式部署的节点结构。


在Mongodb分片方式部署时,需要三种类型的节点:


分片服务器。用于实际存放集合的数据。直接查询某个分片服务器是不能得到一个集合的完整数据的。至少应该有2个分片服务器。


配置服务器。用于存放各种配置数据。至少应该有3个配置服务器以副本集方式部署。


路由服务器。用于定位分片并向外提供数据服务。直接查询路由服务器的数据可以得到一个集合的完整数据。至少应该有2个路由服务器。


Mongodb分片的三种应用方式。


范围分片。使用集合的某个键作为分片字段,根据范围分片。


哈希分片。使用集合的某个键作为分片字段,根据哈希值分片。


标签分片。使用集合的某个键作为分片字段,根据标签值分片。


2.分片环境搭建


为了操作方便,假定所有服务器均在同一个机器上运行。


在搭建Mongodb分片方式的集群时,按照以下步骤进行。


(1)创建如图所示的目录结构,每个数字目录代表一个服务器所使用的端口。



图1


config目录中的端口用于配置服务器。route目录中的端口用于路由服务器。shard目录中的端口用于分片服务器。因此,这个mongodb集群中总共会运行9个mongodb服务器,每种类型的服务器各有3个。


(2)编写配置服务器的启动脚本。



图2


(3)编写分片服务器的启动脚本。



图3


编写路由服务器的启动脚本。



图4


(5)启动配置服务器节点。


首先应该启动配置服务器节点,再启动分片节点,最后启动路由节点。


[root@coe2coe data]# ./config/startconfig.sh  27117 27118 27119


starting mongodb configsvr @HOMEDIR:{/data/mongo/data/config/27117}


about to fork child process, waiting until server is ready for connections.


forked process: 6403


child process started successfully, parent exiting


starting mongodb configsvr @HOMEDIR:{/data/mongo/data/config/27118}


about to fork child process, waiting until server is ready for connections.


forked process: 6437


child process started successfully, parent exiting


starting mongodb configsvr @HOMEDIR:{/data/mongo/data/config/27119}


about to fork child process, waiting until server is ready for connections.


forked process: 6471


child process started successfully, parent exiting


3个配置服务器需要配置成为副本集的方式,因此将它们组成一个副本集,以27117节点为主节点,另外两个节点均为从节点(SECONDARY)。具体配置方式请参考之前的关于副本集的博客。此处不再赘述。


(6)启动分片服务器节点。


[root@coe2coe data]# ./shard/startshard.sh 27017 27018 27019


starting mongodb shardsvr @HOMEDIR:{/data/mongo/data/shard/27017}


about to fork child process, waiting until server is ready for connections.


forked process: 6324


child process started successfully, parent exiting


starting mongodb shardsvr @HOMEDIR:{/data/mongo/data/shard/27018}


about to fork child process, waiting until server is ready for connections.


forked process: 6350


child process started successfully, parent exiting


starting mongodb shardsvr @HOMEDIR:{/data/mongo/data/shard/27019}


about to fork child process, waiting until server is ready for connections.


forked process: 6376


child process started successfully, parent exiting


(7)启动路由服务器节点。


[root@coe2coe data]# ./route/startroute.sh  11.1.1.11:27117,11.1.1.11:27118,11.1.1.11:27119   27217 27218 27219


CONFIG_SERVERS:{11.1.1.11:27117,11.1.1.11:27118,11.1.1.11:27119}


DBPORTS:{27217}


starting mongodb routing @HOMEDIR:{/data/mongo/data/route/27217}


about to fork child process, waiting until server is ready for connections.


forked process: 6643


child process started successfully, parent exiting


starting mongodb routing @HOMEDIR:{/data/mongo/data/route/27218}


about to fork child process, waiting until server is ready for connections.


forked process: 6674


child process started successfully, parent exiting


starting mongodb routing @HOMEDIR:{/data/mongo/data/route/27219}


about to fork child process, waiting until server is ready for connections
编程开发网

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇hql优化教程 下一篇MySQL递归查询_函数语法检查_GROU..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }