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

深入探索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.lryc.cn/news/271853.html

相关文章:

  • gem5学习(8):创建一个简单的缓存对象--Creating a simple cache object
  • 【PTA-C语言】实验七-函数与指针I
  • C# 让数据保留小数后两位,不足的补充0
  • RK3568驱动指南|第九篇 设备模型-第92章 引用计数器实验
  • 苹果电脑Dock栏优化软件 mac功能亮点
  • 【UE5蓝图】读取本地json文件修改窗口大小
  • ACM32F403/F433 12 位多通道国产芯片,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中
  • 2024最新前端React面试题:JSX是什么,它和JS有什么区别
  • 3d导入模型怎样显示原本材质---模大狮模型网
  • web前端开发网页制作html/css结课作业
  • 工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
  • C++初阶------------------入门C++
  • 深度学习核心技术与实践之自然语言处理篇
  • AI-ChatGPTCopilot
  • 网络安全-真实ip获取伪造与隐藏挖掘
  • CMake入门教程【核心篇】添加子目录(add_subdirectory)
  • Prototype原型模式(对象创建)
  • [Redis实战]分布式锁
  • SpingBoot的项目实战--模拟电商【2.登录】
  • http——https实现指南
  • ROS仿真R2机器人之安装运行及MoveIt的介绍
  • 【linux 多线程并发】线程属性设置与查看,绑定CPU,线程分离与可连接,避够多线程下的内存泄漏
  • 70.乐理基础-打拍子-三连音
  • 100天精通Python(实用脚本篇)——第111天:批量将PDF转Word文档(附上脚本代码)
  • 如何在 NAS 上安装 ONLYOFFICE 文档?
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的图像剪切(ROI)功能(C++)
  • 从 WasmEdge 运行环境读写 Rust Wasm 应用的时序数据
  • 算法训练营Day34(贪心算法)
  • uniapp:全局消息是推送,实现app在线更新,WebSocket,apk上传
  • ARM1.2作业