MongoDB副本集搭建和读写分离配置

news2024/12/23 5:39:53

MongoDB副本集(Replication Set)由一组mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点.客户端数据写入Primary节点。Secondary节点从Primary节点同步数据。以保持副本集内所有成员存储相同的数据集。Primary节点故障时会自动选举出一个新的Primary节点。
在实现高可用的同时,副本集实现了其他几个附加作用:
数据分发:将数据从一个区域复制到另一个区域,减少另一个区域的读延迟。
读写分离:不同类型的压力分别在不同节点上执行。
异地容灾:在数据中心故障时快速切换到异地。

windows环境搭建MongoDB副本集

1. 创建两个mongoDB目录

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2. 配置相同的副本集名称,不同的端口

在这里插入图片描述
在这里插入图片描述

#存储  
storage:
  #数据存储目录 windows这里用斜杠/,不能用反斜杠\
  dbPath: "D:/soft/mongodb-6.0.2-2/data"
  #journal日志是否开启,默认情况下该日志在最长不超过100ms之后向磁盘写入增量数据
  journal:
    enabled: true
#网络  
net:
  #绑定IP,如果此值是‘0.0.0.0’则绑定所有IP
  bindIp: localhost,127.0.0.1
  #监听端口,默认27017
  port: 27019
#副本集   
replication:
  #副本集名称
  replSetName: resGreat  

3. 启动两个服务

mongod -f mongod.conf

在这里插入图片描述
在这里插入图片描述

4. 使用mongosh工具连接主节点服务

这里选择27017作为主节点

mongosh.exe --port 27017

在这里插入图片描述

5. 初始化副本集

在这里插入图片描述

6. 将其余成员增加到副本集

rs.add('127.0.0.1:27019')

在这里插入图片描述

7. 其他相关命令

查看配置

rs.conf()

查看状态

rs.status()

8. ReadPreference读偏好

默认情况下,读写都是分发都Primary节点执行,我们希望进行读写分离来分摊压力,所以希望使用Secondary节点来进行读取,Primary只承担写的责任(实际上写只能分发到Primary节点,不可修改)。

MongoDB有5种ReadPreference模式:

primary: 主节点,默认模式,读操作只在主节点,如果主节点不可用,报错或者抛出异常。
primaryPreferred:首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。
secondary:从节点,读操作只在从节点, 如果从节点不可用,报错或者抛出异常。
secondaryPreferred:首选从节点,大多情况下读操作在从节点,特殊情况(如单主节点架构)读操作在主节点。
nearest:最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点。

9. Spring Boot 读写分离配置

Mongo的读写分离非常的简单,只需要在连接字符串中添加如下参数

spring:      
  data:
    mongodb:
      uri: mongodb://localhost:27017,localhost:27019/?replicaSet=resGreat&readPreference=secondaryPreferred

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

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

相关文章

C++ 居然超过了 Python?

很难想象,从 1983 年被正式命名开始算起,已经走过整整四十年光阴的 C,居然力挫 C、Python,摘得了 TIOBE 2022 年度编程语言的桂冠。据 TIOBE 官网显示,在过去一年里,C 因为涨幅最大,为 4.62%&am…

论文投稿指南——中文核心期刊推荐(海洋学)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

javaWeb大体了解

Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站 JavaWeb: 是用 Java技术来解决相关web互联网领域的技术栈。 JavaWeb 技术栈 B/S 架构: Browser/Server,浏览器/服务器 架构模式&#xff0…

读书笔记-《ON JAVA 中文版》-摘要10[第十一章 内部类]

文章目录1. 创建内部类2. 链接外部类3. 使用 .this 和 .new4. 内部类与向上转型5. 内部类方法和作用域6. 匿名内部类7. 嵌套类7.1 嵌套类7.2 接口内部的类7.3 从多层嵌套类中访问外部类的成员8. 为什么需要内部类8.1 为什么需要内部类8.2 闭包与回调8.3 内部类与控制框架9. 继承…

智慧农业远程监控系统解决方案

我国是一个农业大国,农作物种植在全国范围内都非常广泛,农作物病虫害防治工作的好坏、及时与否对于农作物的产量、质量影响至关重要。因种植面积广,分布不均,农业工作人员不能够做到在灾害发生时及时出现在现场,所以农…

【Linux】理解缓冲区

文章目录一.引入二.认识缓冲区1.为什么2.刷新策略3.在哪里三、理解缓冲区一.引入 我们发现 printf 和 fwrite (库函数)都输出了2次,而 write 只输出了一次(系统调用)。为什么呢?肯定和fork有关!…

C++职工管理系统,eof()函数,选择排序

目录 1.创建管理类 1.1头文件实现,在workerManager.h中设计管理类 1.2源文件实现,在workerManager.cpp中将构造和析构函数的空实现补全 2.菜单功能 2.1在管理类workerManager.h中添加菜单成员函数 2.2在管理类workerManager.cpp中写实现 3.退出功能 …

Pycharm基础安装教程:搭建python环境+安装pycharm

嗨害大家好鸭!我是小熊猫~ 之前有的小伙伴总说小熊猫发的内容不够基础… 这次小熊猫就来给大家做一个简单的安装介绍吧~ 这里给大家准备了社区版pycharm2021.2 (最新版部分库不稳定,不建议下载) 第一次安装的小伙伴实在不会下载…

【JavaSE系列】第十节 —— 带你吃透抽象类

(6)当一个抽象类 继承一个抽象类的时候,可以不用来重写 当作父类的那个抽象类的抽象方法:提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、抽象类的概念 二、…

二叉苹果树 【树形dp(背包)】

来源:牛客网 题目链接:https://ac.nowcoder.com/acm/contest/25022/1006 题目描述 有一棵二叉苹果树,如果数字有分叉,一定是分两叉,即没有只有一个儿子的节点。这棵树共N个节点,标号1至N,树根编…

rollup.js配置环境变量

场景: 由于项目是通过svelte.js rollup.js框架搭建起来的, 并没有使用到cli脚手架, 没有办法配置不同环境的变量一. 使用cross-env添加环境变量安装cross-env,它可根据不同的系统设置环境变量npm install cross-env --save-dev在 package.json 中:"…

MongoDB索引

介绍 增加查询效率,不必每次都全表扫描单字段索引:在用户单个字段上创建升序/降序索引复合索引:在多个字段上添加索引;如{name:1, age:-1},关注field顺序其他索引:地理空间索引,文本索引&#x…

浙大MBA复试经验和真题分享——知己知彼胜率更高

前段时间跟朋友吃饭的时候,问我在浙大读MBA是什么体验?其实说实话,当时选择浙大,主要还是为了学历,觉得自己一个普通的二本学历真的平平无奇,公司里面新进的员工虽然年纪轻,但学历却很有来头&am…

PySpark任务提交spark-submit参数设置一文详解

目录 前言 一、PySpark集群运行原理 二、spark-submit参数详解 1.指定运行目录 2.--deploy-mode 3.--master 4.驱动程序和执行器资源 5.--files和--verbose 6.Spark提交配置 三.PySpark程序提交配置选项 1.构建一套虚拟环境 2. 模块依赖问题原因 参阅 前言 之前我们已…

MySQL 笔记

文章目录安装MySQL 语法格式MySQL数据类型命令操作数据库CRUD查询创建表删除表修改表操作数据增改删查基础查询条件查询模糊查询排序查询分组查询分页查询聚合函数约束约束分类安装 软件安装|macOS下超详细的MySQL安装 MySQL 语法格式 每条语句以分号;结尾&#…

LeetCode150.逆波兰表达式

LeetCode刷题记录 文章目录📜题目描述💡解题思路⌨C代码📜题目描述 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意 有效的算符为 、-、* 和/。…

如何mock当前类的私有方法

背景 基础知识 mockito单元测试:它的做法是mock掉当前类的所有外部依赖,保障自己的代码没有问题。举个例子,如果数据库查询的语句出了问题,单元测试不会测试出来。因为它直接mock掉了,不会去真的去查数据库。从这点来…

电压放大器在大功率脉冲电能源研究中的应用

实验名称:大功率脉冲电能源高精度测试技术研究 研究方向:仪器仪表测试 测试目的: 传统的测量精度校准的方法是对传感器单一频率下的刻度因子进行校准,校准方法通常选用同轴分流器串联于放电回路中,通过测量同轴分流器两…

Ubuntu18.04下安装mysql并使用QT成功编译驱动方法

开发环境:Ubuntu18.04QT5.14.2MySQL5.7.240 编译步骤: 1、安装mysql软件和驱动: 打开终端命令,执行安装语句如下: sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install lib…

MyBatisPlus(MP)学习记录(分页查询的开启+日志打印配置)

MP介绍(官网链接) MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 前言 本篇文章展示的MP教学中涉及到的版本如下: IDE…