当前位置: 首页 > news >正文

MongoDB分片集群搭建

----前言

mongodb分片

一般用得比较少,需要较多的服务器,还有三种的角色

一般把mongodb的副本集应用得好就足够用了,可搭建多套mongodb复本集

mongodb分片技术

mongodb副本集可以解决数据备份、读性能的问题,但由于mongodb副本集是每份数据都一模一样的,无法解决数据量过大问题

mongodb分片技术能够把数据分成两份存储,假如shijiange.myuser里面有1亿条数据,分片能够实现5千万左右存储在data1,5千万左右存储在data2

data1、data2需要使用副本集的形式,预防数据丢失

mongodb分片集群三种角色介绍

router角色        #mongodb的路由,提供入口,使得分片集群对外透明。router不存储数据

configsvr角色        #mongodb的配置角色,存储元数据信息。分片集群后端有多份存储,读取数据该去哪个存储上读取,依赖于配置角色。配置角色建议使用副本集

shardsvr角色        #mongodb的存储角色,存储真正的数据,建议使用副本集

依赖关系

当用户通过router角色插入数据时,需要从configsvr知道这份数据插入到哪个节点,然后执行插入动作插入数据到sharedsvr

当用户通过router角色获取数据时,需要从configsvr知道这份数据是存储在哪个节点,然后再去sharedsvr获取数据

mongodb分片集群的搭建说明

使用同一份mongodb二进制文件

修改对应的配置就能实现分片集群的搭建

--第一步,分片集群搭建-configsvr

mongodb分片集群实战环境搭建说明

configsvr        #使用28017,28018,28019三个端口来搭建

router                    #使用27017,27018,27019三个端口来搭建

shardsvr        #使用29017,29018,29019,29020四个端口来搭建,两个端口一个集群,生产环境肯定是要三个端口

资源有限,就三台服务器,我的分配情况是

mongodb配置角色的搭建,配置文件路径/data/mongodb-fenpiancluster/28017,另外两节点改下路径、端口、IP

systemLog:

  destination: file

  logAppend: true

  path: /data/mongodb-fenpiancluster/28017/mongodb.log

storage:

  dbPath: /data/mongodb-fenpiancluster/28017

  journal:

    enabled: true

processManagement:

  fork: true

net:

  port: 28017

  bindIp: 127.0.0.1,192.167.100.181

replication:

  replSetName: zmhconf

sharding:

  clusterRole: configsvr

mongodb配置服务集群的启动跟单例的启动方式一致,都是使用mongod

分片集群的配置角色副本集搭建

config = { _id:"zmhconf",

  configsvr: true,

  members:[

    {_id:0,host:"192.167.100.181:28017"},

    {_id:1,host:"192.167.100.182:28018"},

    {_id:2,host:"192.167.100.183:28019"}

  ]

}

rs.initiate(config)

验证是否搭建成功

/usr/local/mongodb/bin/mongo 192.167.100.181:28017

rs.status()

--第二步,分片集群搭建-router

router说明

mongodb中的router角色只负责提供一个入口,不存储任何的数据

router角色的搭建,配置文件/data/mongodb-fenpiancluster/27017/mongodb.conf

systemLog:

  destination: file

  logAppend: true

  path: /data/mongodb-fenpiancluster/27017/mongodb.log

processManagement:

  fork: true

net:

  port: 27017

  bindIp: 192.167.100.181

sharding:

  configDB: zmhconf/192.167.100.181:28017,192.167.100.182:28018,192.167.100.183:28019

router最重要的配置

指定configsvr的地址,使用副本集id+ip端口的方式指定

配置多个router,任何一个都能正常的获取数据

router的启动

     /usr/local/mongodb/bin/mongos -f /data/mongodb-fenpiancluster/27017/mongodb.conf

/usr/local/mongodb/bin/mongos -f /data/mongodb-fenpiancluster/27018/mongodb.conf

/usr/local/mongodb/bin/mongos -f /data/mongodb-fenpiancluster/27019/mongodb.conf

router的验证

需要等到数据角色搭建完才能够进行验证

--第三步,分片集群搭建-sharedsvr

数据角色

分片集群的数据角色里面存储着真正的数据,所以数据角色一定得使用副本集

多个数据角色

mongodb的数据角色搭建,配置文件/data/mongodb-fenpiancluster/29017/mongodb.conf,另外三台也这么写,由于资源不足,把zmhdata2的副本集都放在了192.167.100.183上。

systemLog:

  destination: file

  logAppend: true

  path: /data/mongodb-fenpiancluster/29017/mongodb.log

storage:

  dbPath: /data/mongodb-fenpiancluster/29017

  journal:

    enabled: true

processManagement:

  fork: true

net:

  port: 29017

  bindIp: 192.167.100.181

replication:

  replSetName: zmhdata1

sharding:

  clusterRole: shardsvr

systemLog:

  destination: file

  logAppend: true

  path: /data/mongodb-fenpiancluster/29019/mongodb.log

storage:

  dbPath: /data/mongodb-fenpiancluster/29019

  journal:

    enabled: true

processManagement:

  fork: true

net:

  port: 29019

  bindIp: 192.167.100.183

replication:

  replSetName: zmhdata2

sharding:

  clusterRole: shardsvr

数据服务两个集群说明

29017、29018数据角色zmhdata1

29019、29020数据角色zmhdata2

在各自节点分别启动四个数据实例

/usr/local/mongodb/bin/mongod -f /data/mongodb-fenpiancluster/29017/mongodb.log

/usr/local/mongodb/bin/mongod -f /data/mongodb-fenpiancluster/29018/mongodb.log

/usr/local/mongodb/bin/mongod -f /data/mongodb-fenpiancluster/29019/mongodb.log

/usr/local/mongodb/bin/mongod -f /data/mongodb-fenpiancluster/29020/mongodb.log

在各自副本集的节点上写入节点信息(任意找一个副本集内的节点操作):

数据角色zmhdata1

config = { _id:"zmhdata1",

  members:[

    {_id:0,host:"192.167.100.181:29017"},

    {_id:1,host:"192.167.100.182:29018"}

  ]

}

rs.initiate(config)

数据角色zmhdata2

config = { _id:"zmhdata2",

  members:[

    {_id:0,host:"192.167.100.183:29019"},

    {_id:1,host:"192.167.100.183:29020"}

  ]

}

rs.initiate(config)

--第四步,分片集群添加数据节点

分片集群添加数据角色,连接到路由角色里面配置,数据角色为副本集的方式

/usr/local/mongodb/bin/mongo 192.167.100.181:27017         

sh.addShard("zmhdata1/192.167.100.181:29017,192.167.100.182:29018")

sh.addShard("zmhdata2/192.167.100.183:29019,192.167.100.183:29020")

sh.status()

默认添加数据没有分片存储,操作都是在路由角色里面

use shijiange

for(i=1; i<=500;i++){

  db.myuser.insert( {name:'mytest'+i, age:i} )

}

db.dropDatabase()        #验证完后删除

经验证发现,新建的数据会随机分配到一个分片中,而不会均分到所有分片。

针对某个数据库的某个表使用hash分片存储,分片存储就会同一个colloection分配两个数据角色(MongoDB的分片是基于集合的,就算有分片集群不等于数据会自动分片,需要实现分片表首先需要启用数据库分片

use admin

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

db.runCommand( { shardcollection : "shijiange.myuser",key : {_id: "hashed"} } )

或者也可以这样的语句来启用分片:

 mongos> sh.enableSharding("shijiange")

 mongos> sh.shardCollection("shijiange.myuser",{_id: "hashed"});

插入数据校验,分布在两个数据角色上

use shijiange

for(i=1; i<=500;i++){

  db.myuser.insert( {name:'mytest'+i, age:i} )

}

配置角色如果挂掉一台会不会有影响

验证mongos多个入口是否能够正常使用

相关文章:

MongoDB分片集群搭建

----前言 mongodb分片 一般用得比较少&#xff0c;需要较多的服务器&#xff0c;还有三种的角色 一般把mongodb的副本集应用得好就足够用了&#xff0c;可搭建多套mongodb复本集 mongodb分片技术 mongodb副本集可以解决数据备份、读性能的问题&#xff0c;但由于mongodb副本集是…...

modbus报文

MODBUS规约报文解析-CSDN博客...

flutter报错: library “libflutter.so“ not found

修改android/app/build.gradle defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "cn.rentsoft.flutter.openim.consumer" // You can update the …...

MR混合现实情景实训教学系统模拟历史情景

二、应用场景 1. 古代战争场景&#xff1a;通过MR混合现实情景实训教学系统&#xff0c;学生可以亲身体验古代战争的场景&#xff0c;如战场布置、战术运用等。这不仅有助于学生更好地理解古代战争的特点&#xff0c;还能够培养他们的团队协作和战略思维能力。 2. 历史文化古…...

计算机视觉的应用16-基于pytorch框架搭建的注意力机制,在汽车品牌与型号分类识别的应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用16-基于pytorch框架搭建的注意力机制&#xff0c;在汽车品牌与型号分类识别的应用&#xff0c;该项目主要引导大家使用pytorch深度学习框架&#xff0c;并熟悉注意力机制模型的搭建&#xff0c;这个…...

Flutter 实现 Android CollapsingToolbarLayout折叠布局效果

Flutter 是通过Tabbar TabbarView 来实现 类似Android Viewpager 页面切换的效果的。我个人觉得Flutter 的tab 切换实现过程要比Android的实现过程要简单容易不是一星半点&#xff0c;哈哈哈哈 &#xff0c;因为她所用到的widget 都是google 官方封装好的&#xff0c;用起来代…...

数据库管理-第116期 Oracle Exadata 06-ESS-下(202301114)

数据库管理-第116期 Oracle Exadata 06-ESS-下&#xff08;202301114&#xff09; 距离上一次正儿八经的技术分享又过了整整一周了&#xff0c;距离上一期Exadata专题文章也过了11天了&#xff0c;今天一鼓作气把ESS写完&#xff0c;毕竟明天又要飞北京了。 1 Smart Scan 其…...

阿里云C++二面面经

1.智能指针 1、shared_ptr 原理:shared_ptr是基于引用计数的智能指针,用于管理动态分配的对象。无论 std::shared_ptr 存储在堆区还是栈区,它所指向的内存块始终存储在堆区。这是因为 std::shared_ptr 是用于管理动态分配的内存的智能指针,它需要存储在堆区,以便进行引用…...

Ubuntu 20.04编译Chrome浏览器

本文记录chrome浏览器编译过程&#xff0c;帮助大家避坑qaq 官网文档&#xff1a;https://chromium.googlesource.com/chromium/src//main/docs/linux/build_instructions.md 一.系统要求 一台64位的英特尔机器&#xff0c;至少需要8GB的RAM。强烈推荐超过16GB。至少需要100…...

大文件分片上传、断点续传、秒传

小文件上传 后端&#xff1a;SpringBootJDK17 前端&#xff1a;JavaScriptsparkmd5.min.js 一、依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.2</ve…...

DAY53 1143.最长公共子序列 + 1035.不相交的线 + 53. 最大子序和

1143.最长公共子序列 题目要求&#xff1a;给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长公共子序列的长度。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08;也可以不删…...

短剧App开发:个性化的内容推荐

随着移动互联网的普及和用户需求的多样化&#xff0c;短剧App作为一种新兴的内容消费模式&#xff0c;受到了越来越多用户的青睐。在短剧App开发中&#xff0c;个性化的内容推荐是一个重要的功能&#xff0c;它能够根据用户的兴趣偏好和行为数据&#xff0c;为他们提供更精准、…...

互斥量保护资源

一、概念 在多数情况下&#xff0c;互斥型信号量和二值型信号量非常相似&#xff0c;但是从功能上二值型信号量用于同步&#xff0c; 而互斥型信号量用于资源保护。 互斥型信号量和二值型信号量还有一个最大的区别&#xff0c;互斥型信号量可以有效解决优先级反转现 象。 …...

天机学堂-1、项目搭建,微服务架构设计

1.学习背景 各位同学大家好&#xff0c;经过前面的学习我们已经掌握了《微服务架构》的核心技术栈。相信大家也体会到了微服务架构相对于项目一的单体架构要复杂很多&#xff0c;你的脑袋里也会有很多的问号&#xff1a; 微服务架构该如何拆分&#xff1f; 到了公司中我需要自…...

windows 电脑删除不了.TTF的文件

出现这个问题&#xff0c;首先检查&#xff0c;你的.ttf文件是不是在哪个软件中打开了。 如果是&#xff0c;先关掉&#xff0c;然后在删一遍试试。 如果这个还是不行试着打开控制面板>外观和个性化> 字体 > 字体设置>还原默认字体设置勾选&#xff0c;然后重启一下…...

C#多线程的操作

文章目录 1 使用线程意义2 C#线程开启的四种方式2.1 异步委托开启线程2.2 通过Thread类开启线程2.3 通过线程池开启线程2.4 通过任务Task开启线程 3 前台线程和后台线程简述3.1 前台线程3.2 后台线程 4 简述Thread和Task开启线程的区别4.1 Thread效果展示4.2 Task效果展示4.3 区…...

MyBatis Plus—CRUD 接口

Service CRUD 接口 说明: 通用 Service CRUD 封装IService (opens new window)接口&#xff0c;进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆&#xff0c;泛型 T 为任意实体对象建议如果存在自定义通用 Servi…...

火焰图:链路追踪分析的可视化利器

什么是火焰图&#xff1f; 火焰图用于可视化分布式链路追踪&#xff0c;通过使用持续时间和不同颜色的水平条形来表示请求执行路径中的每个服务调用。分布式跟踪的火焰图包括错误、延迟数据等详情&#xff0c;帮助开发人员识别和解决应用程序中的瓶颈问题。 链路追踪与 Span …...

中睿天下Coremail | 2023年Q3企业邮箱安全态势观察报告

10月25日&#xff0c;北京中睿天下信息技术有限公司联合Coremail邮件安全发布《2023年第三季度企业邮箱安全性研究报告》。2023年第三季度企业邮箱安全呈现出何种态势&#xff1f;作为邮箱管理员&#xff0c;我们又该如何做好防护&#xff1f; 以下为精华版阅读&#xff0c;如需…...

HBuilderX vue项目打包上传到服务器

完成后有个’dist’目录,把真个目录通过FTP 上传到服务器,Mac电脑使用cyberduck 上传 服务器使用‘宝塔’进行一件部署,基本上就是傻瓜式的点击下一步...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...