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

这篇具有很好参考价值的文章主要介绍了【MongoDB】五、MongoDB分片集群的部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


实验目的

       能够通过部署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)

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


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)

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


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分片集群的部署


实验小结

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

到了这里,关于【MongoDB】五、MongoDB分片集群的部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 53.MongoDB分片集群&高级集群架构详解

    为什么要使用分片 分片(shard)是指在将数据进行水平切分之后,将其存储到多个不同的服务器节点上的一种扩展方式。 一个复制集能承载的容量和负载是有限的,遇到以下场景就需要考虑使用分片 存储容量需求超出单机的磁盘容量。 活跃的数据集超出单机内存容量,导致

    2024年02月08日
    浏览(35)
  • MongoDB分片集群架构详解

    分片(shard)是指在将数据进行水平切分之后,将其存储到多个不同的服务器节点上的一种扩展方式。分片在概念上非常类似于应用开发中的“水平分表”。不同的点在于,MongoDB 本身就自带了分片管理的能力,对于开发者来说可以做到开箱即用。 为什么要使用分片? MongoD

    2024年02月01日
    浏览(54)
  • MongoDB 分片集群

    在了解分片集群之前,务必要先了解复制集技术! 一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合。复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础。 1.1.1 复制集的目的 保证数据在生产部署时的冗余和可靠性,通过在不同的机器上保存副

    2024年02月13日
    浏览(37)
  • MongoDB分片集群搭建

    MongoDB 有三种集群架构模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。 Master-Slaver 是一种主从复制的模式,目前已经不推荐使用 ReplicaSet模式取代了Master-Slaver模式,是一种互为主从的关系。Replica Set 将数据复制多份保存,不同服务器保存同一

    2024年01月19日
    浏览(45)
  • MongoDB分片部署(windows)

    OS:win10 MongoDB:4.4.24 从图中可以看出,分片集群中主要由三个部分组成,即分片服务器( Shard )、路由服务器 ( Mongos )以及配置服务器( Config Server )组成。其中,分片服务器有三个,即 Shard1 、 Shard2 、 Shard3 ;路由服务器有两个,即 Mongos1 和 Mongos2 ;配置服务器有三个

    2024年04月27日
    浏览(24)
  • 【MongoDB】集群搭建实战 | 副本集 Replica-Set | 分片集群 Shard-Cluster | 安全认证

    副本集 MongoDB副本集(Replica Set)是一组维护相同数据集的 MongoDB 实例,它可以提供数据的冗余和高可用性。 副本集由一个主节点(Primary)和多个从节点(Secondary)组成。 客户端所有写操作都会发送到主节点,主节点会记录oplog,然后将写操作同步到从节点。 从节点可以进行

    2024年02月05日
    浏览(42)
  • ES分片副本设置及集群部署

    一个 Lucene 索引 我们在 Elasticsearch 称作 分片 。 一个Elasticsearch 索引 是分片的集合。 当 Elasticsearch 在索引中搜索的时候, 他发送查询到每一个属于索引的分片(Lucene 索引),然后合并每个分片的结果到一个全局的结果集。 分片很重要,主要有两方面的原因: 1、允许水平分

    2023年04月08日
    浏览(50)
  • OLAP系列:三、clickhouse Docker集群部署指南(3分片1副本模式)

    一是为了学习容器,另外也是帮助一些同学解决机器资源紧缺,能够在一台是宿主机部署一套clickhouse集群服务。 本章内容适合开发测试环境使用,生产环境还需要更多细节的处理工作,只能作为参考。 二、部署准备 1、机器准备 172.25.16.108 2、创建容器网络 3、镜像准备 1、下

    2024年02月12日
    浏览(54)
  • MongoDB复制集集群部署及管理

    简述: MongoDB是由C++语言编写一个基于 分布式 文件存储的开源NoSQL数据库系统。在高负载的情况下,可添加更多的节点(实例),以保证服务性能。在许多场景下用于代替传统的关系型数据库或键/值存储方式。旨在为Web应用提供可扩展的高性能数据存储解决方案。 MongoDB提供

    2024年02月12日
    浏览(43)
  • MongoDB K8s集群部署

    1. 准备资源 1.1 NFS准备 这里已经安装了NFS,并且可以处理NFS所有的操作,在这里不会说明NFS中的任何信息,只是使用。如果需要知道NFS如何配置,可查看其他的文章,里面有详细的说明。 1.2 镜像 使用MongoDB在docker.io中,现在比较新的镜像mongo:4.4.9. 如果在内部使用,不想因网

    2024年02月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包