【MongoDB】五、MongoDB分片集群的部署

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

【MongoDB】五、MongoDB分片集群的部署


实验目的

       能够通过部署MongoDB分片集群熟悉MongoDB分片集群架构和基本操作从而解决大数据项目中数据量爆发式增长的需求


实验内容

在这里插入图片描述
1根据上表中分片集群端口号的分配情况部署分片集群XXX是姓名拼音首字母。
2启动分片功能。
3模拟写入数据对数据库和和集合进行分片操作并查看分片信息。


实验步骤

环境准备

1、在nosql01中创建相关数据文件、配置文件以及日志文件的存放目录
命令:

cd /opt/servers/mongodb-demo/
mkdir shardcluster
mkdir -p /opt/servers/mongodb-demo/shardcluster/configServer/configFile
mkdir -p /opt/servers/mongodb-demo/shardcluster/configServer/data
mkdir -p /opt/servers/mongodb-demo/shardcluster/configServer/logs
mkdir -p /opt/servers/mongodb-demo/shardcluster/shard/configFile
mkdir -p /opt/servers/mongodb-demo/shardcluster/shard/shard1_data
mkdir -p /opt/servers/mongodb-demo/shardcluster/shard/shard2_data
mkdir -p /opt/servers/mongodb-demo/shardcluster/shard/shard3_data
mkdir -p /opt/servers/mongodb-demo/shardcluster/shard/logs
mkdir -p /opt/servers/mongodb-demo/shardcluster/mongos/configFile
mkdir -p /opt/servers/mongodb-demo/shardcluster/mongos/logs

2、在服务器nosql01的配置服务器、分片服务器以及路由服务器的日志目录下创建对应的日志管理文件。

# 配置服务器日志管理文件
touch /opt/servers/mongodb-demo/shardcluster/configServer/logs/config_server.log
# 分片服务器1的日志管理文件
touch /opt/servers/mongodb-demo/shardcluster/shard/logs/shard1.log
# 分片服务器2的日志管理文件
touch /opt/servers/mongodb-demo/shardcluster/shard/logs/shard2.log
# 分片服务器3的日志管理文件
touch /opt/servers/mongodb-demo/shardcluster/shard/logs/shard3.log
# 路由服务器日志管理文件
touch /opt/servers/mongodb-demo/shardcluster/mongos/logs/mongos.log

3、分发集群配置文件将服务器nosql01上用于存放分片集群相关配置文件、日志文件和数据文件等相关内容的目录shardcluster分发到服务器nosql02和nosql03上具体命令如下
命令

scp -r /opt/servers/mongodb-demo/shardcluster/ root@zrz02:/opt/servers/mongodb-demo/ 
scp -r /opt/servers/mongodb-demo/shardcluster/ root@zrz03:/opt/servers/mongodb-demo/

部署 Config server

1、创建配置文件

cd /configServer/configFile/
touch mongodb_config.conf

2、编辑配置文件mongodb_config.conf添加配置服务器的相关参数具体命令如下
vi mongodb_config.conf

#数据文件存放位置
dbpath=/opt/servers/mongodb-demo/shardcluster/configServer/data
#日志文件
logpath=/opt/servers/mongodb-demo/shardcluster/configServer/logs/config_server.log
#端口号
port=27022
#绑定服务ip
bind_ip=zrz01
#使用追加的方式写日志
logappend=true
#以守护进程的方式运行MongoDB
fork=true
#最大同时连接数
maxConns=5000
#复制集名称
replSet=configs
#声明这是一个集群的Config Server
configsvr=true

3、将配置文件mongodb_config.conf通过scp命令分发到服务器nosql02和nosql03的目录configFile下
命令

scp /opt/servers/mongodb-demo/shardcluster/configServer/configFile/mongodb_config.conf root@zrz02:/opt/servers/mongodb-demo/shardcluster/configServer/configFile/

scp /opt/servers/mongodb-demo/shardcluster/configServer/configFile/mongodb_config.conf root@zrz03:/opt/servers/mongodb-demo/shardcluster/configServer/configFile/

4、修改服务器nosql02和nosql03配置文件mongodb_config.conf中的参数bind_ip的值即将bind_ip的值修改为对应服务器的IP地址或主机名。
命令

cd /opt/servers/mongodb-demo/shardcluster/configServer/configFile/
vi mongodb_config.conf 

5、启动Config Server

 cd /opt/servers/mongodb-demo/mongodb/bin/ 
 ./mongod -f /opt/servers/mongodb-demo/shardcluster/configServer/configFile/mongodb_config.conf

配置Config Server副本集

1、登录MongoDB客户端
命令

mongo --host zrz01 --port 27022

2、对副本集进行初始化操作
命令

rs.initiate()
rs.add("zrz02:27022")
rs.add("zrz03:27022")
rs.status()

部署Shard

1、创建配置文件zrz01
命令

cd /opt/servers/mongodb-demo/shardcluster/shard/configFile/
touch mongodb_shard1.conf
touch mongodb_shard2.conf
touch mongodb_shard3.conf

2、执行“vi”命令在配置文件mongodb_shard1.conf mongodb_shard2.conf mongodb_shard3.conf中添加分片服务器1的相关参数服务器zrz01

mongodb_shard1.conf
命令
vi mongodb_shard1.conf

dbpath=/opt/servers/mongodb-demo/shardcluster/shard/shard1_data/
logpath=/opt/servers/mongodb-demo/shardcluster/shard/logs/shard1.log
port=27018
logappend=true
fork=true
maxConns=5000
bind_ip=zrz01
#声明开启分片
shardsvr=true
#指定分片shar1的副本集名称
replSet=shard1

mongodb_shard2.conf
命令
vi mongodb_shard2.conf

dbpath=/opt/servers/mongodb-demo/shardcluster/shard/shard2_data/
logpath=/opt/servers/mongodb-demo/shardcluster/shard/logs/shard2.log
port=27020
logappend=true
fork=true
maxConns=5000
bind_ip=zrz01
#声明开启分片
shardsvr=true
#指定分片shar2的副本集名称
replSet=shard2

mongodb_shard3.conf
命令
vi mongodb_shard3.conf

dbpath=/opt/servers/mongodb-demo/shardcluster/shard/shard3_data/
logpath=/opt/servers/mongodb-demo/shardcluster/shard/logs/shard3.log
port=27019
logappend=true
fork=true
maxConns=5000
bind_ip=zrz01
#声明开启分片
shardsvr=true
#指定分片shar3的副本集名称
replSet=shard3

3、创建配置文件zrz02
命令

cd /opt/servers/mongodb-demo/shardcluster/shard/configFile/
touch mongodb_shard1.conf
touch mongodb_shard2.conf
touch mongodb_shard3.conf

4、执行“vi”命令在配置文件mongodb_shard1.conf mongodb_shard2.conf mongodb_shard3.conf中添加分片服务器1的相关参数服务器zrz02

mongodb_shard1.conf
命令
vi mongodb_shard1.conf

dbpath=/opt/servers/mongodb-demo/shardcluster/shard/shard1_data/
logpath=/opt/servers/mongodb-demo/shardcluster/shard/logs/shard1.log
port=27019
logappend=true
fork=true
maxConns=5000
bind_ip=zrz02
#声明开启分片
shardsvr=true
#指定分片shar1的副本集名称
replSet=shard1

mongodb_shard2.conf
命令
vi mongodb_shard2.conf

dbpath=/opt/servers/mongodb-demo/shardcluster/shard/shard2_data/
logpath=/opt/servers/mongodb-demo/shardcluster/shard/logs/shard2.log
port=27018
logappend=true
fork=true
maxConns=5000
bind_ip=zrz02
#声明开启分片
shardsvr=true
#指定分片shar2的副本集名称
replSet=shard2

mongodb_shard3.conf
命令
vi mongodb_shard3.conf

dbpath=/opt/servers/mongodb-demo/shardcluster/shard/shard3_data/
logpath=/opt/servers/mongodb-demo/shardcluster/shard/logs/shard3.log
port=27020
logappend=true
fork=true
maxConns=5000
bind_ip=zrz02
#声明开启分片
shardsvr=true
#指定分片shar3的副本集名称
replSet=shard3

5、创建配置文件zrz03

在这里插入图片描述


6、执行“vi”命令在配置文件mongodb_shard1.conf mongodb_shard2.conf mongodb_shard3.conf中添加分片服务器1的相关参数服务器zrz03

mongodb_shard1.conf
命令
vi mongodb_shard1.conf

dbpath=/opt/servers/mongodb-demo/shardcluster/shard/shard1_data/
logpath=/opt/servers/mongodb-demo/shardcluster/shard/logs/shard1.log
port=27020
logappend=true
fork=true
maxConns=5000
bind_ip=zrz03
#声明开启分片
shardsvr=true
#指定分片shar1的副本集名称
replSet=shard1

mongodb_shard2.conf
命令
vi mongodb_shard2.conf

dbpath=/opt/servers/mongodb-demo/shardcluster/shard/shard2_data/
logpath=/opt/servers/mongodb-demo/shardcluster/shard/logs/shard2.log
port=27019
logappend=true
fork=true
maxConns=5000
bind_ip=zrz03
#声明开启分片
shardsvr=true
#指定分片shar2的副本集名称
replSet=shard2

mongodb_shard3.conf
命令
vi mongodb_shard3.conf

dbpath=/opt/servers/mongodb-demo/shardcluster/shard/shard3_data/
logpath=/opt/servers/mongodb-demo/shardcluster/shard/logs/shard3.log
port=27018
logappend=true
fork=true
maxConns=5000
bind_ip=zrz03
#声明开启分片
shardsvr=true
#指定分片shar3的副本集名称
replSet=shard3

7、启动Shard
命令

mongod -f /opt/servers/mongodb-demo/shardcluster/shard/configFile/mongodb_shard1.conf
mongod -f /opt/servers/mongodb-demo/shardcluster/shard/configFile/mongodb_shard2.conf
mongod -f /opt/servers/mongodb-demo/shardcluster/shard/configFile/mongodb_shard3.conf

8、配置Shard副本集
命令zrz01

mongo --host zrz01 --port 27018
rs.initiate()
rs.add('zrz02:27019')
rs.addArb('zrz03:27020')
rs.status()

命令zrz02

mongo --host zrz02 --port 27018
rs.initiate()
rs.add('zrz03:27019')
rs.addArb('zrz01:27020')
rs.status()

命令zrz03

mongo --host zrz03 --port 27018
rs.initiate()
rs.add('zrz01:27019')
rs.addArb('zrz02:27020')
rs.status()

部署mongos

1、创建配置文件
命令

cd  /opt/servers/mongodb-demo/shardcluster/mongos/configFile/
ll

2、执行“vi”命令在配置文件mongodb_mongos.conf中添加路由服务器的相关参数
命令
vi mongodb_mongos.conf

logpath=/opt/servers/mongodb-demo/shardcluster/mongos/logs/mongos.log
logappend = true
port=27021
bind_ip=zrz01
fork=true
#指定配置服务器Config Server地址
configdb=configs/zrz01:27022,zrz02:27022,zrz03:27022
maxConns=20000

3、由于在分片集群中规划了两个mongos因此需要将配置文件mongodb_mongos.conf通过scp命令分发至服务器nosql02的目录/mongos/configFile下
命令

scp /opt/servers/mongodb-demo/shardcluster/mongos/configFile/mongodb_mongos.conf root@zrz02:/opt/servers/mongodb-demo/shardcluster/mongos/configFile/

4、修改服务器zrz02的配置文件mongodb_mongos.conf中参数bind_ip的值即将值修改为当前服务器的IP地址或主机名即zrz02

在这里插入图片描述


5、启动mongos服务
命令

mongos -f /opt/servers/mongodb-demo/shardcluster/mongos/configFile/mongodb_mongos.conf

启动分片功能

1、在服务器zrz01中登录mongos的MongoDB客户端需要通过mongos操作分片集群
注意在MongoDB的bin目录下执行

mongo --host zrz01 --port 27021

2、切换到数据库gateway
向分片集群中添加三个Shard分别为shard1、shard2和shard3
命令

use gateway
sh.addShard("shard1/zrz01:27018,zrz02:27019,zrz03:27020")
sh.addShard("shard2/zrz01:27020,zrz02:27018,zrz03:27019") 
sh.addShard("shard3/zrz01:27019,zrz02:27020,zrz03:27018")

3、设置chunk
命令

# 切换到数据库config 
use config
# 设置块大小为1M
db.settings.save({"_id":"chunksize","value":1})

4、模拟写入数据
在分片集群中创建数据库school并向数据库中添加集合user然后模拟向集合中写入五万条文档
命令

#切换创建数据库school 
use school
#向集合user中添加5万条文档
mongos> for(i=1;i<=50000;i++){db.user.insert({"id":i,"name":"zrz"+i})}
db.user.find()

5、对数据库进行分片操作
在开启集合分片前需要先开启数据库的分片功能
命令

#切换到数据库gateway 
use gateway
#实现数据库school分片功能
sh.enableSharding("school")

6、对集合进行分片操作前需要为集合user创建索引
命令

#切换到数据库school 
use school
#以"id"作为索引
db.user.createIndex({"id":1})

将以索引“id”作为分片键对集合user进行分片操作
命令

#切换到数据库gateway 
use gateway
#以"id"作为分片键对集合user进行分片
sh.shardCollection("school.user",{"id":1})

查看分片信息

sh.status()

在这里插入图片描述


实验小结

       通过本次对MongoDB分片集群的部署熟悉了MongoDB分片集群架构和基本操作更好的理解了分片策略。在实验过程中遇到了很多硬件或者是软件上的问题请教老师询问同学上网查资料都是解决这些问题的途径。最终将遇到的问题一一解决最终完成实验。
注意事项
1、有疑问前知识学习前先用搜索。
2、熟读写基础知识学得会不如学得牢。
3、选择交流平台如QQ群网站论坛等。
4、尽我能力帮助他人在帮助他人的同时你会深刻巩固知识。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go