深入探索MongoDB集群模式:从高可用复制集

MongoDB复制集概述

MongoDB复制集主要用于实现服务的高可用性,与Redis中的哨兵模式相似。它的核心作用是数据的备份和故障转移。

复制集的主要功能

  1. 数据复制:数据写入主节点(Primary)时,自动复制到一个或多个副本节点(Secondary)。
  2. 故障恢复:主节点失效时,自动从副本节点中选举出新的主节点。

复制集的附加作用

  • 数据分发:将数据从一个区域复制到另一个区域,降低读取延迟。
  • 读写分离:将不同类型的负载分布在不同节点上。
  • 异地容灾:在数据中心发生故障时快速切换到异地节点。

典型复制集结构

  • 一般由三个或更多节点组成,每个节点都具有投票权。
  • 结构包括一个主节点和两个或更多的副本节点。

数据复制机制

  • 当主节点接收到修改操作(如插入、更新或删除)时,这些更改会被记录在操作日志(oplog)中。
  • 副本节点不断从主节点的oplog中获取更新,并在本地回放这些操作,以保持与主节点数据的一致性。

故障恢复与选举

  • 节点间定期发送心跳检测,5次未收到心跳判定节点失联。
  • 主节点失联导致副本节点发起选举,选出新的主节点。
  • 选举基于RAFT算法,要求大多数投票节点存活。
  • 复制集最多包含50个节点,但只有最多7个节点具有投票权。

影响选举的因素

  • 集群中大多数节点必须存活。
  • 被选为主节点的节点需满足:
    1. 能与大多数节点建立连接。
    2. 拥有较新的oplog。
    3. 有较高的优先级(如果配置了的话)。

复制集节点选配项

  • 投票权(v参数):决定是否参与选举。
  • 优先级(priority参数):决定成为主节点的优先级。
  • 隐藏节点(hidden参数):复制数据但对应用不可见,优先级为0。
  • 延迟复制(slaveDelay参数):复制旧数据,保持时间差。
  • 从节点索引:控制从节点是否建立索引。

复制集注意事项

  • 硬件:所有节点硬件配置应一致,确保独立性以防同时故障。
  • 软件:所有节点应运行相同版本的软件以避免兼容性问题。
  • 性能:增加节点并不会提高写入性能。

复制集搭建步骤

  1. 创建数据目录:例如,在Linux系统上,使用mkdir -p /data/db{1,2,3}
  2. 准备配置文件:每个数据库应有不同的端口、数据目录和日志文件路径。

分别启动

mongod -f /data/db1/mongod.conf

mongod -f /data/db2/mongod.conf

mongod -f /data/db3/mongod.conf

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

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

相关文章

Portraiture4.1汉化版PS磨皮插件(支持原生m1芯片m2)

Portraiture汉化版PS磨皮插件。本期推荐一款全新ai算法ps2024中文汉化版ps磨皮插件Portraiture 4.1.2美颜滤镜安装包最新版ps调整肤色插件! 全新Portraiture 4.1.2版本PS人像修图美颜磨皮插件,升级AI算法,并支持多人及全身磨皮美化模式,推荐…

边缘计算网关在温室大棚智能控制系统应用,开启农业新篇章

项目需求 ●目前大棚主要通过人为手动控温度、控水、控光照、控风,希望通过物联网技术在保障产量的前提下,提高作业效率,降低大棚总和管理成本。 ●释放部分劳动力,让农户有精力管理更多大棚,进而增加农户收入。 ●…

Group k-fold解释和代码实现

Group k-fold解释和代码实现 文章目录 一、Group k-fold解释和代码实现是什么?二、 实验数据设置2.1 实验数据生成代码2.2 代码结果 三、实验代码3.1 实验代码3.2 实验结果3.3 结果解释 四、总结 一、Group k-fold解释和代码实现是什么? 0,1…

分布式数据库事务故障恢复的原理与实践

关系数据库中的事务故障恢复并不是一个新问题,自70年代关系数据库诞生之后就一直伴随着数据库技术的发展,并且在分布式数据库的场景下又遇到了一些新的问题。本文将会就事务故障恢复这个问题,分别讲述单机数据库、分布式数据库中遇到的问题和…

java球队信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web球队信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5…

VS配置PCO相机SDK环境

VS配置PCO相机SDK环境 概述:最近要用到一款PCO相机,需要协调其他部件实现一些独特的功能。因此需要用到PCO相机的SDK,并正确配置环境。良好的环境是成功的一半。其SDK可以在官网下载,选择对应版本的安装即可。这里用的是pco.cpp.1.2.0 Windows,VS 2022 专业版。 链接: P…

OpenOCD简介和下载安装(Ubuntu)

文章目录 OpenOCD简介OpenOCD软件模块OpenOCD源码下载OpenOCD安装 OpenOCD简介 OpenOCD(Open On-Chip Debugger)开放式片上调试器 OpenOCD官网 https://openocd.org/,进入官网点击 About 可以看到OpenOCD最初的设计是由国外一个叫Dominic Ra…

Glary Utilities Pro - 电脑系统优化全面指南:详尽使用教程

软件简介: Glary Utilities Pro 是一款全面的电脑优化工具,它旨在帮助用户提升计算机的性能和稳定性。这款软件提供了多种功能,包括系统清理、优化、修复以及保护。通过一键扫描,它可以识别并清除无用文件、临时数据、注册表错误等…

计算机网络:知识回顾

0 本节主要内容 问题描述 解决思路 1 问题描述 通过一个应用场景来回顾计算机网络涉及到的协议(所有层)。如下图所示场景: 学生Bob将笔记本电脑用一根以太网电缆连接到学校的以太网交换机;交换机又与学校的路由器相连&#xf…

Embedding模型在大语言模型中的重要性

引言 随着大型语言模型的发展,以ChatGPT为首,涌现了诸如ChatPDF、BingGPT、NotionAI等多种多样的应用。公众大量地将目光聚焦于生成模型的进展之快,却少有关注支撑许多大型语言模型应用落地的必不可少的Embedding模型。本文将主要介绍为什么…

C练习——银行存款

题目:设银行定期存款的年利率 rate为2.25%,已知存款期为n年,存款本金为capital 元,试编程计算并输出n年后本利之和deposit。 解析:利息本金*利率,下一年的本金又是是今年的本利之和 逻辑:注意浮点数,导入…

【计算机毕业设计】ssm+mysql+jsp实现的在线bbs论坛系统源码

项目介绍 jspssm(springspringMVCmybatis)MySQL实现的在线bbs论坛系统源码,本系统主要实现了前台用户注册登陆、浏览帖子、发布帖子、个人信息管理、消息通知管理,积分管理,后台管理功能有:友情链接管理、…

蓝牙物联网灯控设计方案

蓝牙技术是当前应用最广泛的无线通信技术之一,工作在全球通用的 2.4GHZ 的ISM 频段。蓝牙的工作距离约为 100 米,具有一定的穿透性,没有方向限制。具有低成本、抗干扰能力强、传输质量高、低功耗等特点。蓝牙技术组网比较简单,无需…

Unity坦克大战开发全流程——结束场景——失败界面

结束场景——失败界面 在玩家类中重写死亡函数 在beginPanel中锁定鼠标

关键字:throw关键字

在 Java 中,throw关键字用于抛出异常。当程序执行过程中发生意外情况,如错误的输入、资源不足、错误的逻辑等,导致程序无法正常执行下去时,可以使用throw关键字抛出异常。 以下是使用throw关键字的一些示例: 抛出异常…

【Linux--多线程同步与互斥】

目录 一、线程互斥1.1相关概念介绍1.2互斥量mutex1.3互斥量接口1.3.1初始化互斥量1.3.2销毁互斥量1.3.3互斥量加锁1.3.4互斥量解锁1.3.5使用互斥量解决上面分苹果问题 1.4互斥原理 二、可重入与线程安全2.1相关概念2.2常见线程不安全的情况2.3常见不可重入的情况2.4 可重入与线…

Python+Django 构建实验室药品管理和预警系统【源码】

人生苦短,我用 Python。 今天给大家分享一个完整的实战案例:Python实现实验室药品管理和预警系统,文末附完整代码! 在线演示环境 项目演示地址:http://101.34.18.118:8002/ (图片未压缩,所以加载有点慢&…

穷举vs暴搜vs深搜vs回溯vs剪枝

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 目录 👉🏻全排列👉&#…

浅析锂电池保护板(BMS)系统设计思路(四)SOC算法-扩展Kalman滤波算法

1 SOC估算方法介绍 电池SOC的估算是电池管理系统的核心,自从动力电池出现以来,各种各样的电池SOC估算方法不断出现。随着电池管理系统的逐渐升级,电池SOC估算方法的效率与精度不断提高,下面将介绍常用几种电池SOC估算方法[1]&…

unknown variable ‘authentication_policy=mysql_native_password‘

unknown variable authentication_policymysql_native_password 背景解决尝试一尝试二(解决) 总结 背景 mac上安装多个版本数据库。我是通过dmg安装的,先装的5.7,再装的5.8,然后5.8的能正常用,5.7的启动不起来。报错信息为如下 …