MongoDB分片集群部署

MongoDB分片集群原理、搭建及测试详解 随着技术的发展,目前数据库系统对于海量数据的存储和高效访问海量数据要求越来越高,MongoDB分片机制就是为了解决海量数据的存储和高效海量数据访问而生。 MongoDB分片集群由mongos路由进程(轻量级且非持久化进程)、复制集组成的片shards(分片一般基于复制集故障转移和冗余备份功能)、一组配置服务器(存储元数据信息,一般冗余3台)构成。 一、部署MongoDB分片集群 mongod参数... 阅读详情

MongoDB分片集群部署

MongoDB分片集群介绍:

什么是 MongoDB 分片集群:

  • MongoDB 分片集群(Sharded Cluster)是对数据进行水平扩展的一种方
  • MongoDB 使用 分片集群 来支持大数据集和高吞吐量的业务场景。

为什么要使用分片集群:

副本集遇到的问题:

副本集(ReplicaSet) 帮助我们解决读请求扩展、高可用等问题。随着业务场景进一 步增长,可能会出现以下问题:

  • 存储容量超出单机磁盘容量
  • 活跃数据集超出单机内存容量:很多读请求需要从磁盘读取
  • 写入量超出单机 IOPS 上限

垂直扩容(Scale Up) VS ⽔平扩容(Scale Out):

  • 垂直扩容 : 用更好的服务器,提高 CPU 处理核数、内存数、带宽等
  • 水平扩容 : 将任务分配到多台计算机上

分片集群的基本架构:

  • Mongos
  • 分片集群的访问入口
    • 对请求进行路由、分发、合并
    • 部署多个 Mongos 来保证高可用
  • ConfigServer
  • 存储元信息和集群配置
    • 部署为副本集来保证高可用
  • Shard
  • 存储用户数据,不同 Shard 保存不同用户数据
    • 部署为副本集来保证高可用

服务规划:

由于设备问题,目前我们只采用了3个设备进行部署。3个设备同时部署config Servers,shard1,shard2,route。

该部署使用的Red Hat 7为例

前提工作

所有设备都要进行如下操作。

1.关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

2.关闭SELinux

setenforce 0                   //临时关闭

vim /etc/selinux/config        //永久关闭

3.解压MongoDB包

注意选择对应的系统版本的MongoDB包,在这里我使用的是Centos7的环境,所以下载的也是rhel70的MongoDB包

    tar -zxvf /opt/install/mongodb-linux-x86_64-rhel70-3.4.24.tgz

    mv /opt/install/mongodb-linux-x86_64-rhel70-3.4.24/ /usr/local/mongodb

configServers部署

三台设备都需要部署configServer形成副本集,最后部署完成的结果是:192.168.36.137为主(PRIMARY),138和139为从(SECONDARY),端口都为21000。

1.创建configServers相关目录

mkdir -p /usr/local/mongodb/configServers/{data,log,conf}

2.配置configServers配置文件

vim /usr/local/mongodb/configServers/conf/configServers.conf
dbpath=/usr/local/mongodb/configServers/data
logpath=/usr/local/mongodb/configServers/log/configServers.log
pidfilepath=/usr/local/mongodb/configServers/configServers.pid
logappend=true 
bind_ip=192.168.36.137           #其它设备只需要替换这个成本机IP即可
port=21000
fork=true
replSet=replconf                 #副本集名称
configsvr=true                   #开启config Servers组件

3.启动configServers

cd /usr/local/mongodb/bin
./mongod -f /usr/local/mongodb/configServers/conf/configServers.conf

4.副本集初始化

cd /usr/local/mongodb/bin
./mongo 192.168.36.137:21000
> use admin
> rs.initiate({
_id:"replconf",
members:[
{_id:0,host:"192.168.36.137:21000"},
{_id:1,host:"192.168.36.138:21000"},
{_id:2,host:"192.168.36.139:21000"},]
})

shard1部署

三台设备都需要部署shard1形成副本集,最后部署完成的结果是:192.168.36.137为主(PRIMARY),138为从(SECONDARY),139为仲裁(ARBITER),端口都为22001。

1.创建shard1相关目录

mkdir -p /usr/local/mongodb/shard1/{data,log,conf}

2.配置shard1配置文件

vim /usr/local/mongodb/shard1/conf/shard1.conf
dbpath=/usr/local/mongodb/shard1/data
logpath=/usr/local/mongodb/shard1/log/shard1.log
pidfilepath=/usr/local/mongodb/shard1/shard1.pid
logappend=true 
bind_ip=192.168.36.137           #其它设备只需要替换这个成本机IP即可
port=22001
fork=true
replSet=shard1                   #副本集名称
shardsvr=true                    #开启shard组件

3.启动shard1

cd /usr/local/mongodb/bin
./mongod -f /usr/local/mongodb/shard1/conf/shard1.conf

4.副本集初始化

 cd /usr/local/mongodb/bin

./mongo 192.168.36.137:22001
> use admin
> rs.initiate({
_id:"shard1",
members:[
{_id:0,host:"192.168.36.137:22001","priority":2},
{_id:1,host:"192.168.36.138:22001","priority":1},
{_id:2,host:"192.168.36.139:22001",arbiterOnly:true},]
})
注:shard中的仲裁节点其实也不是必须的,若是不想设置仲裁节点,可以将arbiterOnly选项修改为priority

shard2部署

三台设备都需要部署shard2形成副本集,最后部署完成的结果是:192.168.36.137为仲裁(ARBITER),138为主(PRIMARY),139为从(SECONDARY),端口都为22002。

1.创建shard2相关目录

mkdir -p /usr/local/mongodb/shard2/{data,log,conf}
dbpath=/usr/local/mongodb/shard2/data
logpath=/usr/local/mongodb/shard2/log/shard2.log
pidfilepath=/usr/local/mongodb/shard2/shard2.pid
logappend=true 
bind_ip=192.168.36.137           #其它设备只需要替换这个成本机IP即可
port=22002
fork=true
replSet=shard2                   #副本集名称
shardsvr=true                    #开启shard组件

3.启动shard2

cd /usr/local/mongodb/bin
./mongod -f /usr/local/mongodb/shard2/conf/shard2.conf

4.副本集初始化

 cd /usr/local/mongodb/bin
./mongo 192.168.36.138:22002
> use admin
> rs.initiate({
_id:"shard2",
members:[
{_id:0,host:"192.168.36.137:22002",arbiteOnly:true},
{_id:1,host:"192.168.36.138:22002","priority":2},
{_id:2,host:"192.168.36.139:22002","priority":1},]
})

route部署(也就是mongos)

三台设备同样也都需要部署route,端口都为20000。

1.创建route相关目录

mkdir -p /usr/local/mongodb/route/{log,conf}           #route不需要data目录

2.配置route配置文件

vim /usr/local/mongodb/route/conf/route.conf
logpath=/usr/local/mongodb/route/log/route.log
pidfilepath=/usr/local/mongodb/route/route.pid
logappend=true 
bind_ip=192.168.36.137       #其它设备只需要替换这个成本机IP即可
port=20000
fork=true
configdb=replconf/192.168.36.137:21000,192.168.36.138:21000,192.168.36.139:21000    #这里指定的是我们configServers的地址端口

3.启动route

cd /usr/local/mongodb/bin
./mongos -f /usr/local/mongodb/router/conf/router.conf

4.增加shard节点

cd /usr/local/mongodb/bin
./mongo 192.168.36.137:20000
#下列两种方式任选其一即可
方式一:
> use admin
> db.runCommand({addshard:"shard1/192.168.36.137:22001,192.168.36.138:22001,192.168.36.139:22001"})         //shard是我们第一个设置的share名称和它的各个节点
> db.runCommand({addshard:"shard2/192.168.36.137:22002,192.168.36.138:22002,192.168.36.139:22002"})         //shard是我们第二个设置的share名称和它的各个节点
> sh.status()        //查看集群分片状态                                                                                       > use config
> db.shards.find()                                                                                          //查看当前所有shard节点信息

方式二:              
sh.addShard("shard1/192.168.36.137:22001,192.168.36.138:22001,192.168.36.139:22001");
sh.addShard("shard2/192.168.36.137:22002,192.168.36.138:22002,192.168.36.139:22002");
若后期我们有新的shard节点也是通过该方式进行新增。
MongoDB集群分片安装部署手册 按照先后顺序来处理关闭,mongos>config>shard3>shard2>shard1。启动顺序:config>shadr1>shadr2>shadr3>mongos。等十几分钟后,数据会均匀分配到其他分片。只需要在一台主机上执行。只需要在一台主机上执行。只需要在一台主机上执行。只需要在一台主机上执行。只需要在一台主机上执行。只需要在一台主机上执行。 阅读详情

相关推荐

MongoDB分片集群详解与部署

MongoDB的分片集群是一种将数据存储到多个服务器上的技术,每个服务器存储数据的一个子集。通过分片,MongoDB可以将数据分散到多个分片(Shard)上,每个分片都是一个独立的MongoDB实例,可以存储数据的一部分。分片集群通过路由进程(mongos)来管理数据路由,将客户端的请求路由到正确的分片上。MongoDB的分片集群提供了一种可扩展的解决方案,可以支持大规模数据集的高效存储和查询。通过合理的部署和配置,我们可以实现高性能、高可用性和容错性的数据库系统。

2301_81446229的博客 1871

手把手教你搭建MongoDB分片式部署集群+实战

MongoDB分片式集群部署实战,构建一个MongoDB的分片集群,需要三个重要组件,分别是分片服务器(Shard Server)、配置服务器(Config Server)、路由服务器(Router Server)。

Executing_的博客 8187

Centos、Linux下部署mongodb分片集群

Centos、Linux下部署mongodb分片集群 前段时间公司开发新项目,数据量比较大,读写操作比较频繁,需要用到高效存储、高可扩展性和高可用性的数据库,根据网上介绍和自己理解部署mongodb集群,有不对的地方请多多指教。 mongodb集群分为三种:主从模式、副本集、分片模式; 主从模式:一台主服务器、多个从服务器 ;整体来看就是数据库的备份,防止主服务器坏掉数据丢失; 副本集:至少三台电...

longer_fly的博客 1157

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

2、执行“vi”命令,在配置文件mongodb_shard1.conf mongodb_shard2.conf mongodb_shard3.conf中添加分片服务器1的相关参数(服务器zrz01)4、执行“vi”命令,在配置文件mongodb_shard1.conf mongodb_shard2.conf mongodb_shard3.conf中添加分片服务器1的相关参数(服务器zrz02)2、在服务器nosql01的配置服务器、分片服务器以及路由服务器的日志目录下,创建对应的日志管理文件。

慢热型网友的博客 5875

MongoDB分片集群搭建部署

文章目录一、环境规划二、安装部署2.1 安装包部署2.2 config serve 配置服务器部署2.3 shard 分片集群部署2.4 mongos 路由服务器部署三、分片集群功能测试 MongoDB分片集群主要由以下组件组成: shard : 主要用来实际存储分片数据,每个分片都可以部署为一个副本集 mongos : 主要用来做查询路由器,将客户端请求与与各分片之间数据进行协调路由 config servers : 主要用来存储整个集群的元数据以及配置信息 一、环境规划 1、服务器部署规划

三思的博客 783

MongoDB——部署MongoDB分片集群

MongoDB分片集群的搭建分片的概念分片集群的优势分片集群包含的组件部署MongoDB分片集群的准备工作配置shard配置Config Server配置 mongos配置复制集进入节点服务器集群配置节点衔接启动mongos指定分片键对集合分片 分片的概念 分片(sharding)是一种跨多台机器分布数据的方法, MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署。 换句话说:分片(sharding)是指将数据拆分,将其分散存在不同的机器上的过程。有时也用分区(partitionin

Cantevenl的博客 2249

MongoDB部署分片集群

mongodb分片集群简介 分片集群简介 mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把对应的数据请求转发到对应的shard服务器上。在生产环境通常有多mongos作为请求的入口,防止其中一个挂掉所有的mongodb请求都没有办法操作。 config server,顾名思义为配置服务器,存储所有数据库元信息(路由、分片)的配置。mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里

IT 5022

部署mongodb分片集群

手把手教配置mongodb分片集群

m0_56847107的博客 497

mongodb分片集群部署

重新打开mongodb服务,即可像原来一样使用,但是数据存储方式和原来已经不一样了,变成了分布式的分片存储。

szwzwwww的博客 1708

第六阶段【MongoDB】05:快速部署MongoDB分片集群

快速部署MongoDB分片集群

weixin_40612128的博客 330

Matlab子图排版终极指南:从tight_subplot到tiledlayout的实战对比

本文深入对比Matlab中两大子图排版工具:社区经典函数tight_subplot与官方现代布局管理器tiledlayout。针对默认subplot产生的子图间距与边缘距离问题,详细解析两者的设计哲学、参数控制与实战应用,帮助用户根据版本与需求选择最佳方案,实现高效、精确且美观的多子图排版。

weixin_29048309的博客 360

MongoDB分片集群的部署

4、执行“vi”命令,在配置文件mongodb_shard1.conf mongodb_shard2.conf mongodb_shard3.conf中添加分片服务器1的相关参数(服务器zrz02)6、执行“vi”命令,在配置文件mongodb_shard1.conf mongodb_shard2.conf mongodb_shard3.conf中添加分片服务器1的相关参数(服务器zrz03)分片,就是分别存储数据,分布式存储!的配置服务器、分片服务器以及路由服务器的日志目录下,创建对应的。

wyf98926336的博客 939

Halcon和C#联合编程实现硬币识别(个人入门练习)

本人为机器视觉入门小白,自己突发奇想 1.图片数据来源和分析 2.HALCON实现 3.C#搭建界面框架 4.C#中嵌入HALCON代码,即联合编程 5.导出.exe文件,运行以及Debug 目标是这样的,在图片中识别出每种类型的硬币数量,然后计算出总钱数。先上结果,再细说过程。 C#界面和识别结果: 1.图片数据来源和分析 图片大小及格式均统一,拍摄的时候已经尽可能的去除了背景噪点,所以图像处理的要求并不很高(重点在于思路)。硬币区分原理本人代码采用直径范围来判断(也可以半径或区域面积,HALCON算子

Demobird的博客 3614

docker compose部署mongodb 分片集群

将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。减少单个分片需要处理的请求数,提高集群的存储容量和吞吐量 比如,当插入一条数据时,应用只需要访问存储这条数据的分片 减少单分片存储的数据,提高数据可用性,提高大型数据库查询服务的性能。它不再需要单独生成密钥,将 config server 的密钥文件拷贝过来即可,切记一定要使用 config server 的密钥文件,不然会登录不进去。那么这个时候,要么使用这一串不知名的东西,要么就改这个节点的名字。

qq_62866151的博客 2406

stm32H743基于CubeMX配置为双ADC多通道DMA规则采样

stm32H743的ADC支持的最大频率为36MHz,有相关资料上说是可以超频,具体技术细节不多讨论。 需求: 使用stm32H743的ADC采集5路ovrc

xtqbp的博客 4362

40、5G NR射频要求解析

本文详细解析了5G NR射频相关要求,包括参考灵敏度与动态范围的定义、接收机对干扰信号的抗扰性要求(如阻塞、邻道选择性等)、辐射射频要求在FR1和FR2频段的差异,以及多标准无线电基站(MSR)的发展及其对射频要求的影响。内容涵盖测试模型、干扰场景、具体指标和实现挑战,为理解和应用5G NR射频规范提供了全面指导。

qsc901234的博客 245

Mongodb 集群分片部署

一. Mongodb 集群分片部署 分片部署是mongodb数据高可用的方案之一,这里讲的分片就是集群中的单个节点或者节点的集合。 mongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只有一台是用于写操作。正是由于这个情况,为mongoDB提供了数据一致性的保障。担当主角色的机器能把读操作分发给slaves/secondaries。  MongoDB 的数据

lixiaoweihubin的专栏 1075

《企业AI能力地图构建:AI应用架构师的关键秘籍》

构建企业AI能力地图是企业在AI时代实现战略转型和创新发展的关键举措,它需要从评估企业当前AI能力出发,全面了解技术储备、数据资产和人才队伍的现状。将企业业务战略转化为具体的AI应用场景,并进行优先级排序,是确保AI应用能够为企业带来实际价值的重要步骤。通过深入理解业务战略和挖掘应用场景,企业可以找准AI应用的切入点,提高投资回报率。

AI架构全栈开发实战笔记 631

MongoDB【高可用篇】02:MongoDB分片集群安装部署

MongoDB分片集群安装部署

weixin_40612128的博客 1145

别再瞎改网络结构了!解决YOLO小目标检测痛点,我用这招把mAP提了15%

本文基于我7年工业PCB缺陷检测、无人机航拍、安防监控项目的一线落地经验,针对YOLO小目标检测最痛的「漏检率高、特征丢失、精度难提升」三大核心问题,拆解出。本文全程配套小目标特征丢失原理图、分块训练流程图、切图前后效果对比图、mAP提升柱状图、多方案性能对比表等可视化内容,从YOLO天生不擅长小目标的底层根源、方案核心原理、可直接复制的代码实现,到工业场景实测验证、新手必踩的10个坑位避坑指南,全链路讲透。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 387

使用FPGA实现MIPI DSI接口

通过使用FPGA,我们可以实现MIPI DSI接口,并在FPGA上生成相应的时序和电平转换电路。通过使用FPGA,我们可以实现MIPI DSI接口,并在FPGA上生成相应的时序和电平转换电路。在本文中,我们将探讨如何使用FPGA实现MIPI DSI接口,并提供相应的源代码。根据不同的发送状态,我们设置相应的输出信号。请注意,这只是一个基本的示例,用于说明如何使用FPGA实现MIPI DSI接口的发送功能。请注意,这只是一个基本的示例,用于说明如何使用FPGA实现MIPI DSI接口的发送功能。

ZdqDeveloper的博客 1698

MongoDB分片集群部署及实践

分片是一种跨多台机器分布数据的方法。MongoDB 使用分片来支持具有非常大的数据集和高吞吐量操作的部署读和写:提升读和写的性能存储容量:实现水平扩容高可用:各组件集群部署,实现高可用。

Quantum-Clock 1491

【芯片设计- RTL 数字逻辑设计入门 番外篇6 -- 术语 Tile 介绍】

在系统级芯片(System on Chip, SoC)设计中,“tile” 是一个可以指代不同概念的术语,但通常它指的是芯片上的一个独立的功能单元或核心。一个 tile 可以包含一个或多个处理器核心、缓存、内存控制器、输入输出设备、外设接口或其他功能模块。在 SoC 上,多个 tile 可以被组合和连接起来,以形成一个完整的系统。

CodingCos的博客 3065

MongoDB 分片集群安装与部署(docker容器)

【代码】MongoDB 分片集群安装与部署(docker容器)

知行合一 1432

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: MongoDB常用的操作(数据库、集合)
下一篇: Jupyter基础(增、删、改、查)
Meguling
博客等级 码龄3年 70粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值