深入探索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

相关推荐
你曾经是少年6 分钟前
Java 关键字
java
海南java第二人9 分钟前
SpringBoot启动流程深度解析:从入口到容器就绪的完整机制
java·开发语言
问今域中11 分钟前
Spring Boot 请求参数绑定注解
java·spring boot·后端
星火开发设计13 分钟前
C++ queue 全面解析与实战指南
java·开发语言·数据结构·c++·学习·知识·队列
rgeshfgreh15 分钟前
Java+GeoTools+PostGIS高效求解对跖点
java
鱼跃鹰飞16 分钟前
DDD中的防腐层
java·设计模式·架构
计算机程序设计小李同学19 分钟前
婚纱摄影集成管理系统小程序
java·vue.js·spring boot·后端·微信小程序·小程序
栈与堆1 小时前
LeetCode 19 - 删除链表的倒数第N个节点
java·开发语言·数据结构·python·算法·leetcode·链表
一路向北·重庆分伦1 小时前
03-01:MQ常见问题梳理
java·开发语言
一 乐1 小时前
绿色农产品销售|基于springboot + vue绿色农产品销售系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·宠物