MongoDB分片集群搭建

一、设计集群的架构。

节点主机端口副本集
配置集节点 ConfigServerlocalhost27019xxconfig
路由服务器 Routerlocalhost27017n/a
分片0节点0localhost27010xx0
分片0节点1localhost27011xx0
分片0节点2localhost27012xx0
分片1节点0localhost27013xx1
分片1节点1localhost27014xx1
分片1节点2localhost27015xx1

根据以上的架构,我们设计两个shard(分片0,分片1),一个config,一个路由节点router。采用PSA的模式,就是一主一从一仲裁的模式。配置集节点 ConfigServer采用单节点配置。下面就开动吧!

二、示意图。

针对以上的框架结构,我简略的画了一下示意图。

在这里插入图片描述

大概就是这个样子了,图画的有点丑,哈哈哈。

三、搭建副本集。

一、搭建thc0、thc1。

我是在Windows上面练习搭建的,所以我们首先进入到Windows的环境当中。也就是进入到MongoDB的bin目录下面。

我练习的是把所有的东西弄在一个文件夹shard当中,首先按照上面需求创建好文件目录。
在这里插入图片描述
thc0下面创建以下文件夹
在这里插入图片描述
thc1下面创建以下文件夹
在这里插入图片描述

也可以采用命令创建这些目录:

`mkdir \shard\thc0\thc00\data`

`mkdir \shard\thc0\thc00\log`

`mkdir \shard\thc0\thc01\data`

`mkdir \shard\thc0\thc01\log`

`mkdir \shard\thc0\thc02\data`

`mkdir \shard\thc0\thc02\log`

`mkdir \shard\thc1\thc10\data`

`mkdir \shard\thc1\thc10\log`

`mkdir \shard\thc1\thc11\data`

`mkdir \shard\thc1\thc11\log`

`mkdir \shard\thc1\thc12\data`

`mkdir \shard\thc1\thc12\log`

二、配置文件。

一、配置thc0。

切换到MongoDB的bin目录下面

`cd mongodb\bin`

在这里插入图片描述

进行文件配置:

`mongod --dbpath D:\MongoDB\shard\thc0\thc00\data --logpath D:\MongoDB\shard\thc0\thc00\log\log.txt --logappend --port 27010 --replSet thc0 --shardsvr `

`mongod --dbpath D:\MongoDB\shard\thc0\thc01\data --logpath D:\MongoDB\shard\thc0\thc01\log\log.txt --logappend --port 27011 --replSet thc0 --shardsvr` 

`mongod --dbpath D:\MongoDB\shard\thc0\thc02\data --logpath D:\MongoDB\shard\thc0\thc02\log\log.txt --logappend --port 27012 --replSet thc0 --shardsvr` 

进入到一个节点:

`>mongo localhost:27010`

注册,采用的是PSA模式:

`var rsconf = {
        "_id" : "thc0",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "localhost:27010"
                },
                {
                        "_id" : 1,
                        "host" : "localhost:27011"
                },
                {
                        "_id" : 2,
                        "host" : "localhost:27012",
                        "arbiterOnly" : true,
                        "priority":0
                }
        ]
}
rs.initiate(rsconf)`

在这里插入图片描述

看到这个节点是从节点。按一下回车键会变成主节点,然后连接到从节点,在主节点插入数据,从节点更新数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HJqCgO1j-1622812631027)(C:\Users\xyyth\AppData\Roaming\Typora\typora-user-images\image-20210604110152049.png)]

在这里插入图片描述

进入从节点我们show dbs时发现会报错,那么就是没有同步:可以执行如下操作

`rs.slaveOk()`

在这里插入图片描述

这样子这个副本集就搭好了。

二、配置thc1。

这配置和thc1是同样的操作。

切换到MongoDB的bin目录下面

`cd mongodb\bin`

进行文件配置:

``mongod --dbpath D:\MongoDB\shard\thc1\thc10\data --logpath D:\MongoDB\shard\thc1\thc10\log\log.txt --logappend --port 27013 --replSet thc1 --shardsvr`

``mongod --dbpath D:\MongoDB\shard\thc1\thc11\data --logpath D:\MongoDB\shard\thc1\thc11\log\log.txt --logappend --port 27014 --replSet thc1 --shardsvr`

``mongod --dbpath D:\MongoDB\shard\thc1\thc12\data --logpath D:\MongoDB\shard\thc1\thc12\log\log.txt --logappend --port 27015 --replSet thc1 --shardsvr`

进入到一个节点:

`>mongo localhost:27013`

注册,采用的是PSA模式:

`var rsconf = {
        "_id" : "thc1",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "localhost:27013"
                },
                {
                        "_id" : 1,
                        "host" : "localhost:27014"
                },
                {
                        "_id" : 2,
                        "host" : "localhost:27015",
                        "arbiterOnly" : true,
                        "priority":0
                }
        ]
}
rs.initiate(rsconf)`

在这里插入图片描述

后面可以按照上面thc0的步骤进行验证。

三、配置config。

创建好文件夹

`mkdir \shard\thcconfig\thc10\data`

`mkdir \shard\thcconfig\thc10\log`

切换到MongoDB的bin目录下面

`cd mongodb\bin`

进行文件配置:

`mongod --dbpath D:\MongoDB\shard\thcconfig\config0\data --logpath D:\MongoDB\shard\thcconfig\config0\log\log.txt --logappend --port 27019 --replSet thcconfig --configsvr`

连接到27019

 `mongo localhost:27019/admin`

注册:

``var rsconf = {`
        `"_id" : "thcconfig",
        "members" : [
                {
                        "_id" : 0,`
                        `"host" : "localhost:27019"`
                `},`
``                

        ]
`}`
``rs.initiate(rsconf)``

在这里插入图片描述

三、创建路由节点。

新建目录

`mongos --logpath D:\MongoDB\shard\router\log\mongos.log --logappend --port 27017 --configdb "thcconfig\localhost:27019"`

四、进入mongos。

mongo

如果这里不能进去,可能是端口冲突,查看一下端口,杀掉进程后继续就可以了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如上所示就可以正常启动了。

五、连接到路由服务器mongos节点。添加分片集。

和连接mongod节点一样,我们可以使用mongo程序来连接,由于使用默认的27017作为mongos端口,可以在本机直接使用mongo命令,或者手动指定主机或端口号
在这里插入图片描述

四、实验操作。

一、查看当前状态

sh.status()

在这里插入图片描述

二、 创建数据库cqust。

`Use cqust`

在这里插入图片描述

三、 在数据库cqust中创建students集合

在这里插入图片描述

四、 自行选择片键,在cqust.students集合上创建片键索引。

在这里插入图片描述

五、开启数据库(db)分片功能

在这里插入图片描述

六、 对集合(Collection)执行分片

在这里插入图片描述
在这里插入图片描述

七、 运行populate_cqust_students.js添加50000条学生数据到cqust.students集合

在这里插入图片描述

八、查看数据分片状态

`use cqust`

`sh.status()`

`db.stats()`

`db.students.getShardDistribution()`

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐