MongoDB集群搭建-最简单

目录

前言

一、分片概念

二、搭建集群的步骤

总结


前言

MongoDB分片(Sharding)是一种水平扩展数据库的方法,它允许将数据分散存储在多个服务器上,从而提高数据库的存储容量和处理能力。分片是MongoDB为了应对大数据量和高吞吐量需求而设计的一种分布式架构。


一、分片概念

1.分片键(Shard Key):MongoDB使用分片键来决定数据如何分布在不同的分片上。分片键可以是文档中的一个字段或字段组合,MongoDB会根据分片键的值将数据均匀地分配到各个分片中。

2.分片(Shard):分片是MongoDB集群中的一个组成部分,它是一个独立的MongoDB实例,负责存储一部分数据。每个分片可以包含多个数据块(Chunks),这些数据块是根据分片键的值范围来划分的。

3.配置服务器(Config Servers):配置服务器存储着集群的元数据信息,包括分片的配置信息、数据库和集合的元数据等。配置服务器是集群的控制中心,所有分片和客户端都需要与配置服务器通信来获取必要的信息。

4.查询路由器(Query Routers):查询路由器(也称为mongos)是客户端与MongoDB集群交互的接口。客户端通过查询路由器发送请求,查询路由器会根据分片键将请求路由到相应的分片上,并将结果汇总返回给客户端。

二、搭建集群的步骤

 1.配置config副本集

1.1准备数据存放路径

在mongodb下文件创建shard文件

在shard下创建以下文件

分别在rs0和rs1创建以下文件

2.启动分片服务
配置Shard1分片复制集rs0

打开三个cmd窗口分别输入以下命令:


mongod --dbpath D:\mongodb\shard\rs0\db1 --replSet rs0 --port 1000 --shardsvr
mongod --dbpath D:\mongodb\shard\rs0\db2 --replSet rs0 --port 1001 --shardsvr
mongod --dbpath D:\mongodb\shard\rs0\db3 --replSet rs0 --port 1002 --shardsvr

接着新打开一个cmd窗口输入:

//连接任意节点,配置
mongo --port 1000
conf={"_id":"rs0","members":[{"_id":0,"host":"localhost:1000"},{"_id":1,"host":"localhost:1001"},{"_id":2,"host":"localhost:1002"}]
}
rs.initiate(conf)

进行上面相同的操作配置Shard2分片复制集rs1

四个cmd窗口:

mongod --dbpath D:\mongodb\shard\rs1\db1 --replSet rs1 --port 2000 --shardsvr
mongod --dbpath D:\mongodb\shard\rs1\db2 --replSet rs1 --port 2001 --shardsvr
mongod --dbpath D:\mongodb\shard\rs1\db3 --replSet rs1 --port 2002 --shardsvr
mongo --port 2000
conf={"_id":"rs1","members":[{"_id":0,"host":"localhost:2000"},{"_id":1,"host":"localhost:2001"},{"_id":2,"host":"localhost:2002"}]
}
rs.initiate(conf)

3.配置Config Server
四个cmd窗口:

mongod --dbpath D:\mongodb\shard\config\config0 --replSet config --port 3000 --configsvr
mongod --dbpath D:\mongodb\shard\config\config1 --replSet config --port 3001 --configsvr
mongo --port 3000
conf={"_id":"config","members":[{"_id":0,"host":"localhost:3000"},{"_id":1,"host":"localhost:3001"}]
}
rs.initiate(conf)

 4.启动mongos路由进程
 

mongos --configdb config/localhost:3000,localhost:3001 --port 4000

 5.连接mongos进程,进行配置(mongos)

mongo --port 4000
查看分片信息
use admin
db.runCommand({"listshards":1})

6.addShard添加分片(mongos) 

use admin
db.runCommand({"addShard":"rs0/localhost:1000,localhost:1001,localhost:1002","name":"shard1"
})
db.runCommand({"addShard":"rs1/localhost:2000,localhost:2001,localhost:2002","name":"shard2"
})
db.runCommand({"listshards":1})

7 .为数据库启用分片(mongos)

use admin
db.runCommand({"enablesharding":"test"})

 

8.为数据库启用分片(mongos)

use admin
db.runCommand({"enablesharding":"test"})

9.对集合进行分片

use admin
db.runCommand({"shardcollection":"test.students","key":{"_id":1}})

10. 设置chunk大小(mongos)

use admin
sh.startBalancer()
use config
db.settings.save({_id:"chunksize",value:1})
db.settings.find()

这样分片集群就搭建好了。

11.在java中使用mongodb分片集群

 端口号为4000!!!

搭建集群的作用

1.提高性能:通过将数据分散到多个服务器上,可以并行处理更多的查询和写操作,从而提高数据库的性能。

2.扩展存储容量:随着数据量的增加,单个服务器的存储容量可能不足以满足需求。通过分片,可以将数据分散存储在多个服务器上,从而扩展存储容量。

3.提高可用性:分片集群通过数据的副本集(Replica Sets)来实现高可用性。即使某个分片发生故障,其他分片仍然可以提供服务,保证了系统的稳定运行。


总结

以上就是mongodb的集群搭建操作,如有错误,在评论区和我讨论哦,谢谢观看!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/867537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git温习

基本流程 工作区–>暂存区–>本地仓库–>远程仓库 基本配置 git config user.name [用户名] 设置用户名添加–project,针对当前项目生效(默认)添加–global,针对当前用户生效(示例:git config -…

vivado CONFIG_MODE、CONFIG_VOLTAGE

配置模式 CONFIG_MODE属性定义要用于的设备配置模式 引脚分配、DRC报告和比特流生成。 重要提示:COMPATIBLE_CONFIG_MODES属性在2013.3版本中已被弃用,并且 被CONFIG_MODE属性替换。 Xilinx FPGA可以通过加载特定于应用程序的配置数据或 比特流通过特殊的…

ChatGPT-4 对比 ChatGPT-3.5:有哪些优势

引言 ChatGPT4相比于ChatGPT3.5,有着诸多不可比拟的优势,比如图片生成、图片内容解析、GPTS开发、更智能的语言理解能力等,但是在国内使用GPT4存在网络及充值障碍等问题,如果您对ChatGPT4.0感兴趣,可以私信博主为您解决账号和环境…

composables 目录下的文件(web前端)

composables 目录通常用于存放可组合的函数或逻辑,这些函数或逻辑可以在不同的组件中复用。具体来说,composables 目录下的文件通常包含以下内容: 组合式函数 (Composable Functions): 这些函数利用 Vue 3 的组合式 API&#xff0…

Science期刊政策反转:允许生成式AI用于论文写作,意味着什么?

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 关于各大top期刊和出版社对于生成式AI用于论文写作中的规定,娜姐之前写过一篇文章: 如何合理使用AI写论文?来看Top 100学术期刊和出版社的…

深度解析 Raft 分布式一致性协议

本文参考转载至:浅谈 Raft 分布式一致性协议|图解 Raft - 白泽来了 - 博客园 (cnblogs.com) 深度解析 Raft 分布式一致性协议 - 掘金 (juejin.cn) raft-zh_cn/raft-zh_cn.md at master maemual/raft-zh_cn (github.com) 本篇文章将模拟一个KV数据读写服…

【漏洞复现】禅道——未授权登入(QVD-2024-15263)

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 禅道(Zentao)是一款开源的项目管理和协作…

死锁-活锁与活锁的预防、死锁与死锁的预防和检测(处理死锁的方式:事务等待图)

一、引言 1、死锁是因采用封锁技术实现并发控制而产生的一种运行事务被阻塞或等待的现象 2、如果利用严格两阶段封锁协议来解决我们前面提到的“更新丢失”这种数据不一致问题,非串行调度中的事务T1首先获得数据对象X上的读锁并开始执行,随后事务T2也获…

数值分析笔记(五)线性方程组解法

三角分解法 A的杜利特分解公式如下: u 1 j a 1 j ( j 1 , 2 , ⋯ , n ) , l i 1 a i 1 / u 11 ( i 2 , 3 , ⋯ , n ) , u k j a k j − ∑ m 1 k − 1 l b m u m j ⇒ a k j ( j k , k 1 , ⋯ , n ) , l i k ( a i k − ∑ m 1 k − 1 l i n u m k ) /…

uniapp 在手机上导出excel

1.创建excelDev.js文件 export default {exportExcel(fileData, documentName excel) {plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, function(fs) {let rootObj fs.rootlet fullPath rootObj.fullPathconsole.log("开始导出数据")// 创建文件夹rootObj…

破解宇宙终极奥秘,战胜昊天无上束缚

在幽邃的暗夜下,细品着夫子与昊天跨越千年的智勇交锋,我的思绪不禁飘向了更加深远的宇宙边际,回响起那些关于人类如何挑战天命、战胜上天的过往。 宇宙奥秘 在浩瀚无垠的宇宙深渊中,隐藏着一段超越凡尘的规则。昊天,…

2、Key的层级结构

Key的层级结构 Redis的key允许有多个单词形成层级结构,多个单词之间用’:隔开。 举个例子: 我们有一个项目project,有user和product俩种不同的数据类型,那么我们可以这么定义key: user相关的key:project:user:1 pr…

2025湖北武汉智慧教育装备信息化展/智慧校园展/湖北高博会

2025武汉教育装备展,2025武汉智慧教育展,2025武汉智慧校园展,2025武汉教育信息化展,2025武汉智慧教室展,湖北智慧校园展,湖北智慧教室展,武汉教学设备展,湖北高教会,湖北高博会 2025湖北武汉智慧教育装备信息化展/智慧校园展/湖北高博会 2025第10届武汉国际教育装备及智慧校园…

计算机网络——数据链路层(以太网扩展、虚拟局域网、高速以太网)

在许多情况下,我们希望把以太网的覆盖范围扩展。本节先讨论在物理层把以太网扩展,然后讨论在数据链路层把以太网扩展。这种扩展的以太网在网络层看来仍然是一个网络。 在物理层扩展以太网 现在,扩展主机和集线器之间的距离的一种简单方法就是…

jmeter-beanshell学习3-beanshell获取请求报文和响应报文

前后两个报文,后面报文要用前面报文的响应结果,这个简单,正则表达式或者json提取器,都能实现。但是如果后面报文要用前面请求报文的内容,感觉有点难。最早时候把随机数写在自定义变量,前后两个接口都用这个…

小暑节气,选对劳保鞋,让安全与清凉同行

在七月炽热的阳光下,我们迎来了二十四节气中的小暑,标志着盛夏时节的正式开始。随着气温的节节攀升,不仅大自然万物进入了生长的旺季,我们的工作与日常生活也面临着新的挑战——如何在高温环境下保障自身安全,成为了不…

实例演示kafka stream消息流式处理流程及原理

以下结合案例&#xff1a;统计消息中单词出现次数&#xff0c;来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…

如何在Java应用中实现全文搜索功能

如何在Java应用中实现全文搜索功能 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代应用程序开发中&#xff0c;全文搜索功能变得越来越重要。它能够帮助…

Vue的介绍

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

使用引用返回类对象本身

#include<iostream> #include<ctime> using namespace std; class Person { public://Person()//{// cout << "构造函数调用"<<endl;//}Person(int age){this->age age;cout << "有参构造函数调用" << endl;}Pers…