MongoDB教程(六):mongoDB复制副本集
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
文章目录
- 引言
- 一、MongoDB 复制副本集概述
- 1.1 复制副本集的优势
- 二、复制副本集的架构
- 2.1 PSS 模式
- 2.2 PSA 模式
- 三、复制副本集的配置步骤
- 3.1 环境准备
- 3.2 安装 MongoDB
- 3.3 创建配置文件
- 3.4 启动 MongoDB 实例
- 3.5 初始化副本集
- 3.6 验证副本集状态
- 四、故障转移测试
- 五、实际应用中的考虑因素
引言
MongoDB 的复制副本集(Replica Set)是 MongoDB 实现高可用性和数据冗余的重要机制。本文将详细介绍 MongoDB 复制副本集的工作原理、架构、配置步骤,并通过一个详细的案例来说明如何搭建一个基本的 MongoDB 复制副本集。
一、MongoDB 复制副本集概述
MongoDB 的复制副本集是一组维护相同数据集合的 mongod 实例,这些实例协同工作以确保数据的高可用性和冗余。副本集包括一个主节点(Primary)和多个从节点(Secondary),所有客户端的写操作都通过主节点进行,而从节点则从主节点复制数据以保持数据的一致性。当主节点出现故障时,副本集会自动从从节点中选举出一个新的主节点,从而确保服务的连续性。
1.1 复制副本集的优势
高可用性和故障转移:自动选举新的主节点,确保服务不中断。
数据冗余:通过在不同节点上存储数据副本,提高数据的可靠性和安全性。
读写分离:从节点可以处理读操作,提高系统的读取能力。
灾难恢复:在数据中心故障时,可以快速切换到异地备份。
二、复制副本集的架构
2.1 PSS 模式
PSS 模式是 MongoDB 推荐的复制副本集模式,由一个主节点和两个从节点组成(Primary+Secondary+Secondary)。此模式始终提供数据集的两个完整副本,保证了数据的高可用性。
2.2 PSA 模式
PSA 模式由一个主节点、一个从节点和一个仲裁者节点组成(Primary+Secondary+Arbiter)。仲裁者节点不存储数据副本,也不参与读写操作,仅用于在选举过程中提供投票。此模式在资源有限时很有用,因为它仅提供一个完整的数据副本,同时减少了资源消耗。
三、复制副本集的配置步骤
3.1 环境准备
首先,需要准备至少三台服务器或虚拟机来部署 MongoDB 实例。在本文的案例中,我们将使用同一台机器上的不同端口来模拟三个不同的 MongoDB 实例。
3.2 安装 MongoDB
确保 MongoDB 已安装在所有服务器上,并配置好环境变量。在本文的案例中,我们假设 MongoDB 已安装在 /data/program/software/mongodb 目录下。
3.3 创建配置文件
为每个 MongoDB 实例创建独立的配置文件,指定不同的端口、数据目录和日志文件路径。以下是三个实例的配置文件示例:
# mongod1.conf
dbpath=/data/db1
logpath=/data/db1/mongod.log
port=27017
bindIp=0.0.0.0
replSet=rs0
fork=true
logAppend=true # mongod2.conf
dbpath=/data/db2
logpath=/data/db2/mongod.log
port=27018
bindIp=0.0.0.0
replSet=rs0
fork=true
logAppend=true # mongod3.conf
dbpath=/data/db3
logpath=/data/db3/mongod.log
port=27019
bindIp=0.0.0.0
replSet=rs0
fork=true
logAppend=true
3.4 启动 MongoDB 实例
使用上述配置文件启动三个 MongoDB 实例:
mongod --config /path/to/mongod1.conf
mongod --config /path/to/mongod2.conf
mongod --config /path/to/mongod3.conf
3.5 初始化副本集
连接到其中一个 MongoDB 实例(例如,连接到 27017 端口的主机),并初始化副本集:
mongo --port 27017
rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "localhost:27017" }, { _id: 1, host: "localhost:27018" }, { _id: 2, host: "localhost:27019" } ]
})
3.6 验证副本集状态
使用 rs.status() 命令来检查副本集的状态,确保所有成员都健康且已正确配置。
rs.status()
四、故障转移测试
为了验证副本集的故障转移功能,可以模拟主节点故障:
- 停止主节点的 MongoDB 实例。
- 等待一段时间,观察副本集是否自动选举出一个新的主节点。
- 再次执行
rs.status()
命令,查看新的主节点和副本集的状态。
五、实际应用中的考虑因素
- 网络延迟:副本集节点之间的网络延迟会影响数据同步的效率和故障转移的速度。
- 数据一致性:根据应用的需求,合理配置读偏好(Read Preference)来控制从哪个节点读取数据,以满足不同的一致性要求。
- 资源分配:为每个节点分配足够的资源,包括 CPU、内存和存储,以确保它们能够正常运行和处理数据。
喜欢博主的同学,请给博主一丢丢打赏吧↓↓↓您的支持是我不断创作的最大动力哟!感谢您的支持哦😘😘😘
💝💝💝如有需要请大家订阅我的专栏【MongoDB系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!
MongoDB相关文章索引 | 文章链接 |
---|---|
MongoDB教程(一):Linux系统安装mongoDB详细教程 | MongoDB教程(一):Linux系统安装mongoDB详细教程 |
MongoDB教程(二):mongoDB引用shell | MongoDB教程(二):mongoDB引用shell |
MongoDB教程(三):mongoDB用户管理 | MongoDB教程(三):mongoDB用户管理 |
MongoDB教程(四):mongoDB索引 | MongoDB教程(四):mongoDB索引 |
MongoDB教程(五):mongoDB聚合框架 | MongoDB教程(五):mongoDB聚合框架 |
❤️❤️❤️觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
相关文章:

MongoDB教程(六):mongoDB复制副本集
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、MongoD…...

牛客小白月赛98 (个人题解)(补全)
前言: 昨天晚上自己一个人打的小白月赛(因为准备数学期末已经写烦了),题目难度感觉越来越简单了(不在像以前一样根本写不了一点,现在看题解已经能看懂一点了),能感受到自己在不断进步…...
Ubuntu压缩解压各类型文件
在Ubuntu系统中,解压不同格式的压缩文件可能需要安装不同的工具。以下是一些常见的压缩格式和相应的安装命令: ZIP文件: 工具:unzip 安装命令: sudo apt install unzip 解压命令 unzip filename.zip 如果需要保留目录…...

昇思学习打卡-20-生成式/GAN图像生成
文章目录 网络介绍生成器和判别器的博弈过程数据集可视化模型细节训练过程网络优缺点优点缺点 网络介绍 GAN通过设计生成模型和判别模型这两个模块,使其互相博弈学习产生了相当好的输出。 GAN模型的核心在于提出了通过对抗过程来估计生成模型这一全新框架。在这个…...
javafx、node js、socket、OpenGL多线程
机器学习、算法、人工智能、汇编(mips、arm、8086)、操作系统、数据挖掘、编译原理、计算机网络、Arena软件、linux xv6、racket、shell、Linux、PHP、Haskell、Scala、spark、UML、mathematica、GUI、javafx、node js、socket、OpenGL、多线程、qt、数据…...

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(七)-通过无人机实现无线接入的独立部署
引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…...

模糊综合评价
对多因素影响的事务的评价(如人才,方案,成果),有时难以给出影响的确切表达,此时可以采取模糊综合评价的方法。 该方法可以对人,事,物进行比较全面而又定量化的评价。 实例1ÿ…...

系统测试-白盒测试学习
目录 1、语句覆盖法: 2、判定覆盖法: 3、条件覆盖法: 4、判定条件覆盖: 5、条件组合的覆盖: 6、路径覆盖: 黑盒:需求 白盒:主要用于单元测试 1、语句覆盖法: 程序…...

UI设计工具选择指南:Sketch、XD、Figma、即时设计
在数字产品设计产业链中,UI设计师往往起着连接前后的作用。产品经理从一个“需求”开始,制定一个抽象的产品概念原型。UI设计师通过视觉呈现将抽象概念具体化,完成线框图交互逻辑视觉用户体验,最终输出高保真原型,并将…...

Pycharm 导入 conda 环境
使用时经常在此处卡壳,在此做个记录。 这个位置选择 conda 安装路径下的 python.exe 文件即可...
Vue封装Tooltip(提示工具)
<template> <div class"tooltip" mouseover"showTooltip" mouseleave"hideTooltip"> <slot></slot> <!-- 使用slot来接收传入的内容 --> <span class"tooltiptext" v-if"visible">{…...

Go 1.19.4 函数-Day 08
1. 函数概念和调用原理 1.1 基本介绍 函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。 函数声明告诉了编译器函数的名称,返回类型,和参…...

Docker-Nvidia(NVIDIA Container Toolkit)
安装NVIDIA Container Toolkit工具,支持docker使用GPU 目录 1.NVIDIA Container Toolkit 安装1.1 nvidia-docker安装1.2 验证1.2.1 验证安装1.2.2 额外补充 1.NVIDIA Container Toolkit 安装 1.1 nvidia-docker安装 NVIDIA/nvidia-docker Installing the NVIDIA …...
Mongodb 3.6 数据恢复操作
一、安装MongoDB 忽略 二、创建账号和授权 在新的MongoDB上创建用户管理员。先切换到admin库,然后通过命令创建数据库管理员账号和密码。最后再验证账号密码是否创建成功! use admin db.createUser({user:"root",pwd:"123456Ab",…...

C++ | Leetcode C++题解之第238题除自身以外数组的乘积
题目: 题解: class Solution { public:vector<int> productExceptSelf(vector<int>& nums) {int length nums.size();// L 和 R 分别表示左右两侧的乘积列表vector<int> L(length, 0), R(length, 0);vector<int> answer(l…...

挂耳式蓝牙耳机什么牌子好?这五款综合表现遥遥领先
为什么这几年开放式耳机受到了越来越多消费者的喜爱?我想是因为它全方位的弥补了入耳式耳机堵塞耳朵、不够安全健康的缺陷,真正做到了安全性与舒适性兼得。那么刚入坑开放式耳机的小白该如何挑选一款品质较高的开放式耳机呢?挂耳式蓝牙耳机什…...

防火墙-NAT策略和智能选路
一、背景技术 在日常网络环境,内部网络想要访问外网无法直接进行通信,这时候就需要进行NAT地址转换,而在防火墙上配置NAT和路由器上有点小区别,思路基本一致,这次主要就以防火防火墙配置NAT策略为例,防火墙…...
一键优雅为Ubuntu20.04服务器挂载新磁盘
itopen组织1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源,拥抱国产化 一、小于2T磁盘挂载方式 1.1 安装磁盘到电脑后启动系统 1.2 查找未分区的磁盘 打…...

踩坑日记 | 记一次流程图问题排查
踩坑日记:记一次流程图问题排查 标签: activiti | 流程 引言 今天排查了一个流程图问题,耗时2个小时终于解决,记录下来 现象 流程审批驳回报错:Unknown property used in expression: ${xxxx} 使用的是 activiti …...
数据建设实践之大数据平台(四)安装mysql
安装mysql 卸载mysql [bigdatanode101 ~]$ sudo rpm -qa | grep mariadb | xargs sudo rpm -e --nodeps 上传安装包到/opt/software目录并解压 [bigdatanode101 software]$ tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C mysql_lib/ 到mysql_lib目录下顺序安装 …...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...

Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...

[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...
js 设置3秒后执行
如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...