mongodb的分布式的环境搭建

本文详细介绍了在Ubuntu上搭建MongoDB分布式环境的步骤,包括配置configserver的master和slave,设置shard,启动mongos路由器,并以id字段进行hashed sharding。通过分片策略,确保数据均匀分布在两个分片中。
摘要由CSDN通过智能技术生成

总体架构的搭建:

1.分布式架构以及端口的分配设定:

节点:localhost 架构说明:
这个是config的节点说明
 27018:config server(master)config的配置信息,主节点
 27019:config server(slave)             配置信息,从节点,防止主节点奔溃
分片shard的节点说明:
27020:shard_master 
27021:shard_slave
 27022:shard_arbiter 
分片shard2的节点说明:
27023:shard2 
27025:shard2_slave
27026:shard2_arbiter
路由节点:
27024:router
架构图:

在这里插入图片描述

2.在ubuntu里面进行搭建:

1.在自己的home目录下创建一个test空的文件夹
chexin@chexin-virtual-machine:~$ mkdir test
2.在进入test文件里面,创建我们的节点的config的配置文件和存放日志的空文件夹。
这是所有配置文件都创建好了后的的界面展示。
在这里插入图片描述
在这里插入图片描述
接下来手把手教学:
进入到test的目录下面:
(1)创建 configserver_master.conf 的配置文件
(2)logpath里面有一个文件的路径为 configserver_master.conf 这里是一个空文件夹,需要自己提前在test路径下面 创建一个新的文件夹来接收日志文件:
创建一个新的文件夹
chexin@chexin-virtual-machine:~/test$ mkdir configserver_master 创建一个新的文件chexin@chexin-virtual-machine:~/test$ gedit configserver_master.conf`
配置文件内容:

directoryperdb=true
replSet=config
configsvr=true
logpath=/home/chexin/test/configserver_master/mongod.log
logappend=true
fork=true
port=27018
dbpath=/home/chexin/test/configserver_master
pidfilepath=/home/chexin/test/configserver_master/mongod.pid

说明: /home/chexin/test/ 这个是当前文件夹的位置,这里换成你自己的位置。 关于路径的都换成自己当前文件的路径就好了,所有的文件的路径和文件名都不能错,一定检查仔细,看清楚。
也就是说每创建一个conf文件都必须要有一个congfig配置文件和一个config的空目录来接收日志文件
在这里插入图片描述

(2)创建 configserver_slave的配置文件
chexin@chexin-virtual-machine:~/test$ vi configserver_slave.conf
如下图所示:这里的配置文件跟上面的几乎是一样的,不过更改了路径名字和端口号而已。
在这里插入图片描述

第一步configserver的配置就完成了,分别启动master和slave服务。

chexin@chexin-virtual-machine:~/test$ mongod -f configserver_master.conf
chexin@chexin-virtual-machine:~/test$ mongod -f configserver_slaveconf
启动成功后:
在这里插入图片描述
查看你设置的log文件夹会有一大堆配置文件在里面则说明成功了:
在这里插入图片描述
2.在主节点上的配置:
进入到master节点

chexin@chexin-virtual-machine:~/test$ mongo --port=27018
输入:
use admin
在输入配置信息:
cfg={_id:"config",members:[{_id:0,host:'localhost:27018',priority:2}, {_id:1,host:'localhost:27019',priority:1}]};

成功界面:
在这里插入图片描述
再运行:

rs.initiate(cfg)

在这里插入图片描述
从节点上进行开启:
rs.slaveOk()
这里是告诉主节点我准备好了。

以上为config部分的全部步骤:

配置shard

编写配置⽂文件:这个是shard_master.conf的配置文件

	directoryperdb=true
	replSet=shard 
	shardsvr=true 
	logpath=/home/chexin/test/shard_master/mongod.log 
	logappend=true 
	fork=true
	port=27020 
	dbpath=/home/chexin/test/shard_master 
	pidfilepath=/home/chexin/test/shard_master/mongod.pid
	 
	 `这里要注意:replSet=shard   这里设置的是shard`

其他的shard_slave.conf和shard_aribiter.conf的配置文件和上面的是一样的,这里注意把每个配置文件里面的文件名和端口号换成主体框架上面的端口号,也就是 27021和27022.
master、slave、arbiter都配置好后,分别启动
mongod -f mongo.conf
在这里插入图片描述
chexin@chexin-virtual-machine:~/test$ mongod -f shard_master.conf
chexin@chexin-virtual-machine:~/test$ mongod -f shard_slaveconf
chexin@chexin-virtual-machine:~/test$ mongod -f shard_aribiter.conf

进入主节点进行配置:

chexin@chexin-virtual-machine:~/test$ mongo --port=27020

cfg={_id:“shard”,members:[{_id:0,host:‘127.0.0.1:27020’,priority:2},{_id:1,host:‘127.0.0.1:27021’,priority:1},{_id:2,host:‘127.0.0.1:27022’,arbiterOnly:true}]}
在这里插入图片描述
rs.initiate(cfg)
在这里插入图片描述

配置另一个分片 shard2

这个是另一个分片的配置目录。需要向第一个分片一样建立三个配置文件和三个空文件夹,具体配置信息请参照第一个分片shard的配置过程。端口号和文件名还有路径名记得更改。
在配置文件里的时候,特别注意这里要更改设置。
这里要注意:replSet=shard2 这里设置的是shard2
在这里插入图片描述

按照相同方法配置另一个分⽚,把文件名和路径和相对应的端口号给更改好就可以了。

分别启动三个配置文件

进入主节点进行配置:

chexin@chexin-virtual-machine:~/test$ mongo --port=27023

cfg={_id:"shard2",members:[{_id:0,host:'127.0.0.1:27023',priority:2},{_id:1,host:'127.0.0.1:27025',priority:1},{_id:2,host:'127.0.0.1:27026',arbiterOnly:true}]};

在这里插入图片描述

rs.initiate(cfg)

在这里插入图片描述
至此,两块分片配置完成。

router的配置

配置路路由节点
编写配置⽂文件

configdb = config/127.0.0.1:27019,127.0.0.1:27018 
logpath=/home/chexin/test/router/mongod.log 
logappend=true 
fork=true 
port=27024 
pidfilepath=/home/chexin/test/router/mongod.pid

在这里插入图片描述

注意这里的启动的命令是:mongs不是 mongod

mongos -f router.conf

配置具体的分片策略

登录mongos服务器:用mongos启动
chexin@chexin-virtual-machine:~/test$ mongo --port=27024

 use admin
mongos> sh.addShard("shard/127.0.0.1:27020,127.0.0.1:27021,127.0.0.1:27022");

操作图:
添加自己的分片shard的划分:
请注意,如果127.0.0.1配置会出问题的话,请改成 localhost
在这里插入图片描述
分片shard2

mongos> sh.addShard("shard2/127.0.0.1:27023,127.0.0.1:27025,127.0.0.1:27026");

在这里插入图片描述

在mongos上为具体的数据库配置sharding

sh.enableSharding("test")

在这里插入图片描述

对test.t集合以id列为shard key进行hashed sharding

sh.shardCollection("test.t",{id:"hashed"})

可以看到⾃自动为id列列创建了了索引
在这里插入图片描述

db.t.getIndexes()

在这里插入图片描述
分片验证,这个操作在router中进行操作。

use test

for(i=1;i<=1000;i++){db.t.insert({id:i,name:"Lihua"})}

可以看到数据被分配到两个分⽚片当中,分⽚片集群搭建完成

查看数据:

mongos> show dbs

在这里插入图片描述

这个表示我们刚刚插入的1000条数据已经成功放入了router的两个分片中,我们现在分别进入两个分片去查看存储情况:
1.进入shard_slave去查看存储情况
chexin@chexin-virtual-machine:~$ mongo --port=27021

在这里插入图片描述
这里存储了480条数据

2.进入shard2去查看数据
chexin@chexin-virtual-machine:~$ mongo --port=27023
这里存储了520条数据
在这里插入图片描述
至此:检测完毕,部署成功。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是搭建MongoDB分布式集群的步骤: 1.下载MongoDB二进制文件并解压缩到三台服务器上。 2.在三台服务器上创建数据目录和日志目录,并分别启动三个配置服务器。 ```shell # 创建数据目录和日志目录 mkdir -p /data/mongodb/configdb /data/mongodb/shard1/rs0 /data/mongodb/shard2/rs0 /data/mongodb/shard3/rs0 mkdir -p /var/log/mongodb/configdb /var/log/mongodb/shard1/rs0 /var/log/mongodb/shard2/rs0 /var/log/mongodb/shard3/rs0 # 启动三个配置服务器 mongod -f /home/mongodb/conf/config.conf ``` 3.在三台服务器上启动三个路由器。 ```shell mongos --configdb configserver1:27019,configserver2:27019,configserver3:27019 ``` 4.在三台服务器上启动三个分片服务器。 ```shell # 启动分片服务器1 mongod --shardsvr --replSet rs0 --dbpath /data/mongodb/shard1/rs0 --logpath /var/log/mongodb/shard1/rs0.log --port 27017 # 启动分片服务器2 mongod --shardsvr --replSet rs0 --dbpath /data/mongodb/shard2/rs0 --logpath /var/log/mongodb/shard2/rs0.log --port 27018 # 启动分片服务器3 mongod --shardsvr --replSet rs0 --dbpath /data/mongodb/shard3/rs0 --logpath /var/log/mongodb/shard3/rs0.log --port 27019 ``` 5.在其中一个分片服务器上初始化副本集。 ```shell mongo --port 27017 rs.initiate() ``` 6.将其他两个分片服务器加入到副本集中。 ```shell rs.add("shard2:27018") rs.add("shard3:27019") ``` 7.将三个分片服务器添加到路由器中。 ```shell mongos> sh.addShard("rs0/shard1:27017,shard2:27018,shard3:27019") ``` 至此,MongoDB分布式集群搭建完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值