MongoDB分片及副本集配置说明

MongoDB分片及副本集配置说明

 

目录html

MongoDB分片及副本集配置说明... 1sql

第一部分 副本集... 2mongodb

第一步 副本集部署... 3数据库

第二步 副本集初始化(在哪一个端口下初始化都行). 4服务器

第三步 启动仲裁服务器... 4spa

第二部分 分片... 5orm

第一步 开启config服务器... 5server

第二步 开启mongos服务器... 5htm

第三步 启动mongod服务器... 5ip

第四步 分片配置... 6

第三部分 附录... 7

1、分片介绍... 7

2、试验配置说明... 8

第一步 开启config服务器... 8

第二步 开启mongos服务器... 8

第三步 启动mongod服务器... 9

第四步 服务配置... 9

第五步 查看效果... 10

                                             第一部分 分片

图例说明:本例用三台机器做为示例,他们的ip分别为192.168.2.19六、192.168.2.19七、192.168.2.198, 每台服务器上分别存放着config服务器(端口为:20001)、 mongos服务器(端口为:20000)、mongod服务器(端口为:30001)、副本集服务器(端口:30002)。

 

在MongoDB里面存在另外一种集群,就是分片技术,跟sql server的表分区相似,咱们知道当数据量达到T级别的时候,咱们的磁盘,内存就吃不消了,针对这样的场景咱们该如何应对。

                第一步 开启config服务器

分别开启三台机器的config服务,各自端口都为20001:

 

192.168.2.196下:

C:\mongocfig\bin\mongod --dbpath=C:\mongo30001\dataCfig  --port 20001

192.168.2.197下:

D:\mongocfig\bin\mongod --dbpath=D:\mongo30001\dataCfig  --port 20001

192.168.2.198下:

E:\mongocfig\bin\mongod --dbpath=E:\mongo30001\dataCfig  --port 20001

                第二步 开启mongos服务器

分别开启三台机器的mongos服务,各自端口都为20000:

192.168.2.196下:

    C:\mongos\bin\mongos –port 20000 --configdb=192.168.2.196:20001,192.168.2.197:20001,192.168.2.198:20001

192.168.2.197下:

    D:\mongos\bin\mongos –port 20000 --configdb=192.168.2.196:20001,192.168.2.197:20001,192.168.2.198:20001

192.168.2.198下:

   E:\mongos\bin\mongos –port 20000 --configdb=192.168.2.196:20001,192.168.2.197:20001,192.168.2.198:20001

                第三步 启动mongod服务器

分别开启三台机器的mongod服务,各自端口都为30001:

192.168.2.196下:

   C:\mongodb\bin\mongod --port 30001 --dbpath= C:\mongodb\data

192.168.2.197下:

   D:\mongodb\bin\mongod --port 30001 --dbpath= D:\mongodb\data

192.168.2.198下:

   E:\mongodb\bin\mongod --port 30001 --dbpath=E:\mongodb\data

                第四步 分片配置

配置192.168.2.196的分片:

C:\ mongos \bin\mongo  192.168.2.196:20000/admin

db.runCommand({"addshard":"192.168.2.196: 30001 ",allowLocal:true})

db.runCommand({"addshard":"192.168.2.197: 30001 ",allowLocal:true})

db.runCommand({"addshard":"192.168.2.198: 30001 ",allowLocal:true})

db.runCommand({"enablesharding":"marc"})

db.runCommand({"shardcollection":"marc.211010","key":{"_id":1}})


                          第二部分 副本集

副本集合介绍

简述:副本集合(Replica Sets),是一个基于主/从复制机制的复制功能,但增长了自动故障转移和恢复特性。一个集群最多能够支持7个服务器,而且任意节点均可以是主节点。全部的写操做都被分发到主节点,而读操做能够在任何节点上进行。

创建一个副本集须要步骤:

1、须要启动每一个节点,

2、而后进行初始化设置。在这里,咱们将配置一组(三个节点, 他们的ip分别为192.168.2.19六、192.168.2.19七、192.168.2.198),这是标准设置。

一旦mongod节点启动,咱们将发出一个命令,以正确地初始化设置。几秒钟后,将选举产生一个主节点,你就能够开始写和查询集。

         第一步 副本集部署

副本集名称:calisDms,先启动三个节点:

启动ip为192.168.2.196:30001节点:

d:\mongo\bin\mongod --dbpath=d:\mongo30001\data  --port 30001 --replSet calisDms 

启动ip为192.168.2.197:30002的节点:

d:\mongo\bin\mongod --dbpath=d:\mongo30002\data  --port 30002 --replSet calisDms

启动ip为192.168.2.198:30003的节点:

d:\mongo\bin\mongod --dbpath=d:\mongo30003\data  --port 30003 --replSet calisDms  

         第二步 副本集初始化(在哪一个端口下初始化都行)

  2.1:d:\mongo\bin\mongo 192.168.2.196:30001/admin

  2.2:db.runCommand({"replSetInitiate":{"_id":"calisDms","members":[{"_id":1,"host":"192.168.2.196:30001"},{"_id":2,"host":"192.168.2.197:30001"},{"_id":3,"host":"192.168.2.198:30001"}]}})

         第三步 启动仲裁服务器

192.168.2.196:30004,负责仲裁是master剩余为slaver。

3.1:d:\mongo\bin\mongod --dbpath=d:\mongozc\data  --port 30004 --replSet calisDms/192.168.2.196:30001

3.2:d:\mongo\bin\mongo 192.168.2.196:30001/admin

3.3:rs.addArb("192.168.2.196:30004")

3.4:查看集群中服务器状态:rs.status();stateStr为服务状态:(PRIMARY:主服务,SECONDARY:从服务,ARBITER:仲裁服务)


 

第三部分 附录

         1、分片介绍

mongodb采用将集合进行拆分,而后将拆分的数据均摊到几个片上的一种解决方案。

下面我对这张图解释一下:

人脸:表明客户端。

 mongos:首先咱们要了解”片键“的概念,也就是说拆分集合的依据是什么?按照什么键值进行拆分集合,mongos就是一个路由服务器,它会根据管理员设置的“片键”将数据分摊到本身管理的mongod集群,数据和片的对应关系以及相应的配置信息保存在"config服务器"上。

mongod:一个普通的数据库实例,若是不分片的话,咱们会直接连上mongod;若是分片了,咱们则须要链接mongos服务器。

         2、试验配置说明

本部分让读者更清楚分片的意义(具体生产环境配置,请参见三:生产环境下配置说明)。

首先咱们准备4个mongodb程序,我这里是均摊在C,D,E,F盘上,固然你也能够作多个文件夹的形式。

                第一步 开启config服务器

先前也说了,mongos要把mongod之间的配置放到config服务器里面,理所固然首先开启它,我这里就创建2222端口。

                第二步 开启mongos服务器

这里要注意的是咱们开启的是mongos,不是mongod,同时指定下config服务器,这里我就开启D盘上的mongodb,端口3333。

                第三步 启动mongod服务器

对分片来讲,也就是要添加片了,这里开启E,F盘的mongodb,端口为:4444,5555。

                第四步 服务配置

<1> 先前图中也能够看到,咱们client直接跟mongos打交道,也就说明咱们要链接mongos服务器,而后将4444,5555的mongod交给mongos,添加分片也就是addshard()。

这里要注意的是,在addshard中,咱们也能够添加副本集,这样能达到更高的稳定性。

<2>片已经集群了,可是mongos不知道该如何切分数据,也就是咱们先前所说的片键,在mongodb中设置片键要作两步

①:开启数据库分片功能,命令很简单 enablesharding(),这里我就开启test数据库。

②:指定集合中分片的片键,这里我就指定为person.name字段。

                第五步 查看效果

好了,至此咱们的分片操做所有结束,接下来咱们经过mongos向mongodb插入10w记录,而后经过printShardingStatus命令查看mongodb的数据分片状况。

这里主要看三点信息:

① shards: 咱们清楚的看到已经别分为两个片了,shard0000和shard0001。

② databases: 这里有个partitioned字段表示是否分区,这里清楚的看到test已经分区。

③ chunks: 这个颇有意思,咱们发现集合被砍成四段:

无穷小 —— jack0,jack0 ——jack234813,jack234813——jack9999,jack9999——无穷大。

分区状况为:3:1,从后面的 on shardXXXX也能看得出。

参考了《mongdb权威指南》

相关文章
相关标签/搜索