2020-9-4MongoDB集群配置

   日期:2020-09-06     浏览:140    评论:0    
核心提示:MongoDB集群:搭建前首先明确搭建要配置的环境变量有哪些,各内容之间的联系,本文对理论部分稍加阐述,着重阐述搭建成功的步骤

CentOS 7 MongoDB集群搭建–超详细步骤-新手必看

我的三个虚拟主机名分别是wq1、wq2、wq3 下面的各个端口都是默认值,无需改动
路由服务端口:在客户端应用程序和分片群集之间提供接口
配置服务端口:存储集群的元数据和配置设置
分片端口:每个碎片包含碎片数据的子集

主机 路游服务端口 配置服务端口 分片端口1 分片端口2 分片端口3
wq1 27017 27018 27001 27002 27003
wq2 27017 27018 27001 27002 27003
wq3 27017 27018 27001 27002 27003

一些说明:在进行配置文件时,三个虚拟主机都要进行配置,凡牵扯需要运行的部分可在一个虚拟主机上运行,
按照以下步骤进行操作可以运行成功的,本文旨在强调如何搭建,对具体原理稍作浅析方便操作时方便理解,理论深度还远未达到,适用于初学新手

0.MongoDB分片群集主要有如下

Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server 角色可以由几台服务器组成一个Replica Set 承担,防止主机单点故障。

Config Server:配置服务器,存储了整个分片群集的配置信息,其中包括chunk信息。

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

1、下载解压MongoDB

到MongoDB官网下载:点击下载mongodb4.0.6版本
链接如果失效请私信联系
点击查看MongoDB中文手册
解压方式:tar zxvf mongodb-linux-x86_64-4.0.6.tgz
解压后改名并放到 home下 mv mongodb-linux-x86_64-4.0.6.tgz /home/mongodb
(下面的操作则在 /home/mongodb 不再单独声明)

2、设置环境变量

1、vim /etc/profile
2、export PATH=.:/home/mongodb/bin:$PATH
3、source /etc/profile

3、创建配置文件、日志文件所需的文件夹)

启动配置文件存放的文件夹:mkdir -p /home/mongodb/conf
配置服务数据存放目录:mkdir -p /home/mongodb/data/config
分片1服务数据存放目录:mkdir -p /home/mongodb/data/shard1
分片2服务数据存放目录:mkdir -p /home/mongodb/data/shard2
分片3服务数据存放目录:mkdir -p /home/mongodb/data/shard3

创建log目录: mkdir -p /home/mongodb/log
配置服务日志存放文件:touch /home/mongodb/log/config.log
路由服务日志存放文件:touch /home/mongodb/log/mongos.log
分片1服务日志存放文件:touch /home/mongodb/log/shard1.log
分片2服务日志存放文件:touch /home/mongodb/log/shard2.log
分片3服务日志存放文件:touch /home/mongodb/log/shard3.log
(因为mongodb文件下没有创建这些文件夹,但又不能缺少,因此需自己创建)

4、配置服务器部署

  1. 创建config.conf

1、cd /home/mongodb/conf
2、 vim config.conf
3 、插入的数据如下

#插入如下内容
dbpath=/home/mongodb/data/config
logpath=/home/mongodb/log/config.log
port=27018
logappend=true
fork=true  
maxConns=5000
#复制集名称 
replSet=configs
#置参数为true
configsvr=true 
#允许任意机器连接
 bind_ip=0.0.0.0 ```
  1. 配置复制集

mongod -f /home/mongodb/conf/config.conf

  1. 连接mongo

1、mongo --host wq1 --port 27018
2、use admin
3、初始化复制集(#config是config.conf配置文件的复制集名称,三台机器配置服务组成配置集):
rs.initiate({_id:"configs",members:[{_id:0,host:"wq1:27018"},{_id:1,host:"wq2:27018"}, {_id:2,host:"wq3:27018"}]})
运行后三个机器的显示分别为: configs:SECONDARY>
configs:PRIMARY>
configs:PRIMARY>

4、查看状态:rs.status()
运行后如果出现该字段: “ok” : 1,
“operationTime” : Timestamp(1599217827, 2),

  1. 使用脚本语言把一台机器的数据传给另一个机器

该脚本起名为copyall.sh
进行复制的脚本 源文件 目标文件
进行复制的命令:copyall.sh /home/mongodb /home/mongodb
在进行配置时可先配置好一个虚拟机最后通过该命令把配置好的文件传给其他两台虚拟机,另两台再稍作修改即可使用

#根据自己的机器名修改后再使用
#!/bin/bash
HOSTS='wq1 wq2 wq3'
for HOST in ${HOSTS}
do
  echo "++正在复制$1$HOST$2中..."
  scp -rq ${1} ${HOST}:${2}
  echo "--发送完成!"
done

5、分片服务部署

  1. 在 /home/mongodb/conf 下分别创建shard1.conf、shard2.conf、shard3.conf 并按照提示依次插入

配置内容大致相同,改动部分注在后面

dbpath=/home/mongodb/data/shard1 #shard2、shard3 
logpath=/home/mongodb/log/shard1.log #shard2.log、shard3.log 
port=27001 #27002、27003 
logappend=true  
fork=true
maxConns=5000
storageEngine=mmapv1 
shardsvr=true  
replSet=shard1 #shard2、shard3 
bind_ip=0.0.0.0
  1. 启动分片服务

每台机器分别在一个端口形成一个分片的复制集
#每台机器均运行如下片段

mongod -f /home/mongodb/conf/shard1.conf
mongod -f /home/mongodb/conf/shard2.conf
mongod -f /home/mongodb/conf/shard3.conf
  1. 将分片配置为复制集(一台机器上进行操作)

下面运行完后还要分别运行mongo --host wq1 --port 27002
mongo --host wq1 --port 27003
再改变复制集的节点名
1、连接mongo:mongo --host wq1 --port 27001
2、切换数据库:use admin
3、初始化复制集:
rs.initiate({_id:"shard1",members:[{_id:0,host:"wq1:27001"},{_id:1,host:"wq2:27001"},{_id:2,host:"wq3:27001"}]})

6、路由服务部署

  1. 创建mongos.conf
logpath=/home/mongodb/log/mongos.log 
logappend = true
port = 27017  
fork = true  
configdb = configs/wq1:27018, wq2:27018, wq3:27018
maxConns=20000 
bind_ip=0.0.0.0
  1. 启动mongos

三台机器分别运行如下片段
mongos -f /home/mongodb/conf/mongos.conf

  1. 启动分片功能(一台机器运行也可)

1、mongo --host wq1 --port 27017
2、use admin

#3 加入如下部分
sh.addShard("shard1/wq1:27001,wq2:27001,wq3:27001")
sh.addShard("shard2/wq1:27002,wq2:27002,wq3:27002")
sh.addShard("shard3/wq1:27003,wq2:27003,wq3:27003")
  1. 查看集群状态

sh.status()

异常情况处理

环境变量配置完成后未能执行 source /etc/profile
在 vim config.conf 直接粘入代码 没有点击插入命令
虚拟机内存分配过小

配置成功

欢迎在评论区进行讨论

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服