广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB中怎么搭建分片集群
  • 383
分享到

MongoDB中怎么搭建分片集群

2024-04-02 19:04:59 383人浏览 独家记忆
摘要

本篇文章为大家展示了mongoDB中怎么搭建分片集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MonGoDB分片集群基本组件介绍mongos:数据库集群请求的入

本篇文章为大家展示了mongoDB中怎么搭建分片集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

MonGoDB分片集群基本组件介绍

mongos数据库集群请求的入口,所有请求需要经过mongos进行协调,无需在应用层面利用程序来进行路由选择,mongos其自身是一个请求分发中心,负责将外部的请求分发到对应的shard服务器上,mongos作为统一的请求入口,为防止mongos单节点故障,一般需要对其做HA。

config server:配置服务器,存储所有数据库元数据(分片,路由)的配置。mongos本身没有物理存储分片服务器和数据路由信息,只是存缓存在内存中来读取数据,mongos在第一次启动或后期重启时候,就会从config server中加载配置信息,如果配置服务器信息发生更新会通知所有的mongos来更新自己的状态,从而保证准确的请求路由,生产环境中通常也需要多个config server,防止配置文件存在单节点丢失问题。

shard:在传统意义上来讲,如果存在海量数据,单台服务器存储1T压力非常大,无论考虑数据库的硬盘,网络io,又有CPU,内存的瓶颈,如果多台进行分摊1T的数据,到每台上就是可估量的较小数据,在mongodb集群只要设置好分片规则,通过mongos操作数据库,就可以自动把对应的操作请求转发到对应的后端分片服务器上。

replica set:在总体mongodb集群架构中,对应的分片节点,如果单台机器下线,对应整个集群的数据就会出现部分缺失,这是不能发生的,因此对于shard节点需要replica set来保证数据的可靠性,生产环境通常为2个副本+1个仲裁。

MongoDB分片集群搭建架构

架构:我们这次搭建的是三分片,每个分片三个副本集的分片集群

端口分布:mongos:20000 config:21000 shard1:22001 shard2:22002 shard3:22003

MongoDB分片集群搭建集群步骤

1.  各个机器上分别安装MongoDb

安装过程省略。只需要将安装包COPY到各个服务器解压即可

2. 分别在每台机器建立conf、mongos、config、shard1、shard2、shard3六个目录,因为mongos不存储数据,只需要建立日志文件目录即可

mkdir -p /data/mongodb/mongos/{log,conf}
mkdir -p /data/mongodb/mongoconf/{data,log,conf}
mkdir -p /data/mongodb/shard1/{data,log,conf}
mkdir -p /data/mongodb/shard2/{data,log,conf}
mkdir -p /data/mongodb/shard3/{data,log,conf}
touch /data/mongodb/mongos/log/mongos.log
touch /data/mongodb/mongoconf/log/mongoconf.log
touch /data/mongodb/mongoconf/conf/mongoconf.conf
touch /data/mongodb/shard1/log/shard1.log
touch /data/mongodb/shard2/log/shard2.log
touch /data/mongodb/shard3/log/shard3.log

3. 关闭防火墙

systemctl stop firewalld.service

4. Config server搭建副本集,添加如下内容

cat>/data/mongodb/mongoconf/conf/mongoconf.conf<<EOF
dbpath=/data/mongodb/mongoconf/data
logpath=/data/mongodb/mongoconf/log/mongoconf.log    
logappend=true
bind_ip = 0.0.0.0
port = 21000
maxConns = 1000    #链接数       
journal = true        #日志开启    
journalCommitInterval = 200
fork = true     #后台执行       
syncdelay = 60
oplogSize = 1000
configsvr = true   #配置服务器     
replSet=replconf     #config server配置集replconf   
EOF

5. 分别启动三台服务器的config server

mongod -f /data/mongodb/mongoconf/conf/mongoconf.conf

6. 登录任意一台配置服务器,初始化配置副本集

mongo --port 21000
use admin
config = {
   _id : "replconf",
    members : [
        {_id : 0, host : "111.111.111.93:21000" },
        {_id : 1, host : "111.111.111.54:21000" },
        {_id : 2, host : "111.111.111.252:21000" }
    ]
}

7. 初始化config服务器的副本集

rs.initiate(config)

这一步非常重要,必须初始化成功。不成功的话,路由服务器与配置服务器连接不上。 

其中,”_id” : “configs”应与配置文件中配置的 replicaction.replSetName 一致,”members” 中的 “host” 为三个节点的 ip 和 port。

8. 三台分片服务器搭建副本集,配置分片副本集(三台机器)。

cat >/data/mongodb/shard1/conf/shard.conf <<EOF
dbpath=/data/mongodb/shard1/data
logpath = /data/mongodb/shard1/log/shard1.log
port = 22001
bind_ip = 0.0.0.0
logappend = true
noHttpinterface = true
fork = true
oplogSize = 51200
journal = true
smallfiles=true
shardsvr=true #shard服务器        
replSet=shard1   #副本集名称shard1      
EOF

9. 启动三台服务器的shard1 server

mongod -f /data/mongodb/shard1/conf/shard.conf

登陆任意一台服务器,初始化副本集

mongo --port 22001
use admin

10. 定义副本集配置,第三个节点的 “arbiterOnly”:true 代表其为仲裁节点。

config = {_id:"shard1",members:[             
{_id:0,host:"111.111.111.93:22001"},
{_id:1,host:"111.111.111.54:22001",arbiterOnly:true},
{_id:2,host:"111.111.111.252:22001"},]
}

初始化副本集配置

rs.initiate(config);

此时shard1 副本集已经配置完成,mongodb-1为primary,mongodb-2为arbiter,mongodb-3为secondary。

同样的操作进行shard2配置和shard3配置

注意:进行shard2的副本集初始化,在mongodb-2,初始化shard3副本集在mongodb-3上进行操作。

同理,我们设置第二个分片

cat >/data/mongodb/shard2/conf/shard.conf <<EOF
dbpath=/data/mongodb/shard2/data
logpath = /data/mongodb/shard2/log/shard2.log
port = 22002
bind_ip = 0.0.0.0
logappend = true
nohttpinterface = true
fork = true
oplogSize = 51200
journal = true
smallfiles=true
shardsvr=true
replSet=shard2
EOF

并依次启动三台服务器的shard2 server

## 启动shard2副本集
mongod -f /data/mongodb/shard2/conf/shard.conf

初始化副本集配置

## 进入到shard2副本集
mongo --port 22002
use admin                
config = {_id:"shard2",members:[             
{_id:0,host:"111.111.111.93:22002"},
{_id:1,host:"111.111.111.54:22002"},
{_id:2,host:"111.111.111.252:22002",arbiterOnly:true},]
}
rs.initiate(config);

最后设置第三个分片副本集 ,配置文件配置项

cat >/data/mongodb/shard3/conf/shard.conf <<EOF
dbpath=/data/mongodb/shard3/data
logpath = /data/mongodb/shard3/log/shard3.log
port = 22003
logappend = true
nohttpinterface = true
fork = true
oplogSize = 51200
journal = true
smallfiles=true
shardsvr=true
replSet=shard3
EOF

启动三台服务器的shard3 server

mongod -f /data/mongodb/shard3/conf/shard.conf
## 进入到shard3副本集
use admin                
config = {_id:"shard3",members:[             
{_id:0,host:"111.111.111.93:22003",arbiterOnly:true},
{_id:1,host:"111.111.111.54:22003"},
{_id:2,host:"111.111.111.252:22003"},]
}
rs.initiate(config);

11. 配置路由服务器mongos

目前三台服务器的config服务器和shard服务器均已启动,现在开始配置mongos服务的三副本集

由于mongos服务器的配置是从内存中加载,所以自己没有存在数据目录configdb连接为config服务器集群

先启动config服务器和shard服务器,然后启动路由实例:(三台机器)

mongs服务器配置文件

cat >/data/mongodb/mongos/conf/mongos.conf<<EOF
logpath=/data/mongodb/mongos/log/mongos.log
logappend=true
port = 20000
maxConns = 1000
configdb=replconf/111.111.111.93:21000,111.111.111.54:21000,111.111.111.252:21000 #指定config server集群
fork = true
EOF

启动三台服务器的mongos server

mongos -f /data/mongodb/mongos/conf/mongos.conf

目前搭建了mongodb config服务器、mongos服务器,各个shard服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效,意即将mongos,shard,config三类服务器串起来即为分片服务器了

登陆任意一台mongos

mongo --port 20000

使用admin数据库

use admin

串联路由服务器与分配副本集

use admin
db.runCommand({addshard:"shard1/111.111.111.93:22001,111.111.111.54:22001,111.111.111.252:22001"})
db.runCommand({addshard:"shard2/111.111.111.93:22002,111.111.111.54:22002,111.111.111.252:22002"})
db.runCommand({addshard:"shard3/111.111.111.93:22003,111.111.111.54:22003,111.111.111.252:22003"})

查看集群状态

sh.status()

12. 配置分片

目前配置服务、路由服务、分片服务、副本集服务都已经串联起来了,但我们的目的是希望插入数据,数据能够自动分片。连接在mongos上,准备让指定的数据库、指定的集合分片生效。 

指定prod_sharding分片生效

db.runCommand( { enablesharding :"prod_sharding"});

指定数据库里需要分片的集合和片键

db.runCommand( { shardcollection : "prod_sharding.sharding_tbl",key : {"albumId":1,"itemId":1} } )
db.runCommand( { shardcollection : "prod_sharding.sharding_tbl_2",key : {"albumId":"hashed"} } )
db.runCommand( { shardcollection : "prod_sharding.sharding_tbl_3",key : {"albumId":1,"itemId":1} } )
db.runCommand( { shardcollection : "prod_sharding.sharding_tbl_5",key : {"albumId":"hashed"} } )

查看分配状态

db.sharding_tbl.stats();

创建用户

use prod_sharding
db.createUser(
   {
     user: "prod_sharding",
     pwd: "prod_sharding_123",
     roles: [ "dbAdmin", "dbOwner" ]
   }
)

连接DB

mongo 111.111.111.93:20000/prod_test -uprod_test -pprod_test123

上述内容就是MongoDB中怎么搭建分片集群,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB中怎么搭建分片集群

本文链接: https://www.lsjlt.com/news/56450.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB中怎么搭建分片集群
    本篇文章为大家展示了MongoDB中怎么搭建分片集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MongoDB分片集群基本组件介绍mongos:数据库集群请求的入...
    99+
    2022-10-18
  • mongodb分片集群怎么搭建
    要搭建一个MongoDB分片集群,您需要遵循以下步骤: 安装MongoDB:在每个节点上安装MongoDB。您可以从MongoD...
    99+
    2023-10-26
    mongodb
  • mongodb 分片集群搭建
    环境介绍:...
    99+
    2022-10-18
  • 搭建高可用MongoDB集群(分片)
    MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423MongoDB(replica set)请参考:https://blog.51cto.com/kali...
    99+
    2022-10-18
  • mongodb 中怎么利用分片集群创建分片集合
    mongodb 中怎么利用分片集群创建分片集合,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.创建数据库,直接use 即可,没有的话,如果你...
    99+
    2022-10-18
  • mongodb中怎么搭建shard_replica集群
    本篇文章为大家展示了mongodb中怎么搭建shard_replica集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。参考官方文档,大致步骤第一步:创建Confi...
    99+
    2022-10-18
  • mongodb 中怎么设置分片集群
    今天就跟大家聊聊有关mongodb 中怎么设置分片集群,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、先enable sharding,开启数据库...
    99+
    2022-10-18
  • MongoDB中怎么实现分片与集群
    这期内容当中小编将会给大家带来有关MongoDB中怎么实现分片与集群,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、 mongodb分片与集群拓扑图二、分片与集群的部署...
    99+
    2022-10-18
  • 深入剖析MongoDB的复制集与分片集群的搭建与优化
    深入剖析MongoDB的复制集与分片集群的搭建与优化概述在大规模应用程序中,数据存储和管理是至关重要的。MongoDB作为一种非关系数据库解决方案,广泛用于处理大规模数据集和高负载应用程序的需求。MongoDB的数据复制和分片功能让用户能够...
    99+
    2023-11-04
    - MongoDB - 复制集 - 分片集群
  • mongodb集群搭建的步骤是什么
    搭建MongoDB集群的步骤如下: 安装MongoDB:在每个节点上安装MongoDB并确保其正常运行。 配置MongoDB...
    99+
    2023-10-26
    mongodb
  • mongodb集群搭建的方法是什么
    搭建MongoDB集群有多种方法,以下是其中一种常用的方法:1. 安装MongoDB:首先需要在每个集群节点上安装MongoDB数据...
    99+
    2023-09-06
    mongodb
  • redis 分片集群搭建与使用教程
    目录前言搭建集群架构图前置准备搭建步骤创建集群Redis散列插槽说明集群伸缩(添加节点)故障转移使用redistemplate访问分片集群前言 redis可以说在实际项目开发中使用的非常频繁,在redis常用集群中,我们...
    99+
    2022-06-29
    redis 分片集群 redis分片集群搭建
  • redis分片集群如何搭建与使用
    本文小编为大家详细介绍“redis分片集群如何搭建与使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“redis分片集群如何搭建与使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识...
    99+
    2022-10-19
  • mongodb分片集群生产环境怎么配置
    要配置MongoDB分片集群的生产环境,您需要执行以下步骤:1. 设计分片策略:确定如何划分数据片段和选择分片键。分片键是用于将数据...
    99+
    2023-08-23
    mongodb
  • linux下mongodb集群搭建过程的示例分析
    小编给大家分享一下linux下mongodb集群搭建过程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mongodb的集群结构如上图网上有个mongo3...
    99+
    2023-06-29
  • Kubernetes集群怎么搭建
    本篇内容介绍了“Kubernetes集群怎么搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Kubernetes 是一个可移植的、可扩展的...
    99+
    2023-06-27
  • windows怎么搭建Redis分布式集群
    要搭建Redis分布式集群,您可以按照以下步骤进行操作:1. 下载Redis的稳定版本,并解压到不同的目录,例如:redis1、re...
    99+
    2023-09-11
    windows redis
  • Hadoop2.7.5+Spark2.2.1分布式集群怎么搭建
    这篇文章主要介绍“Hadoop2.7.5+Spark2.2.1分布式集群怎么搭建”,在日常操作中,相信很多人在Hadoop2.7.5+Spark2.2.1分布式集群怎么搭建问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-03
  • 关于CentOS 8 搭建MongoDB4.4分片集群的问题
    目录一,简介1.分片2.为什么使用分片3.分片原理概述二,准备环境三,集群配置部署四,测试服务器分片功能一,简介 1.分片 在MongoDB里面存在另一种集群,就是分片技术,可以满...
    99+
    2022-11-12
  • mysql中如何快速搭建PXC集群以及Mycat分片
    mysql中如何快速搭建PXC集群以及Mycat分片,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 搭建PXC集群参考percona...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作