MongoDB副本集最少需要几个节点?

梦萱酱_9411

梦萱酱_9411

2026-08-09

531人浏览

原创

最少需要3个节点,因为副本集选举依赖多数派投票机制:2个节点时任意一个宕机,剩余节点无法获得多数票(2中需≥2票),导致选举失败、集群不可写;3个节点可容忍1个故障,剩余2个仍能达成多数(≥2/3),保障高可用。

mongodb副本集最少需要几个节点?

最少需要 3 个节点。

为什么不能只用 2 个节点?

副本集选举依赖多数派(majority)投票机制。2 个节点时,任意一个宕机,剩下那个无法获得多数票(2 中需 ≥2 票才能构成 majority),选举失败,整个副本集不可写 —— 这和单点故障没区别。

  • 3 个节点:允许 1 个宕机,剩余 2 个仍能达成 majority(≥2/3)
  • 哪怕其中一个是 arbiter(仲裁节点),它不存数据但参与投票,也能凑够奇数票数
  • 生产环境强烈建议 3 个 data-bearing 节点(P-S-S),而非 P-S-A,避免单点数据丢失风险

单机模拟三节点的常见错误

在开发机上用不同端口跑多个 mongod 是可行的,但容易卡在几个地方:

  • --dbpath 目录没清空或权限不对,启动直接报 Unable to lock file
  • 三个实例用了相同 --port 或重复 --replSet 名,导致连接混乱
  • rs.initiate() 里写的 host 是 localhost:27017,但实际 MongoDB 5.0+ 默认绑定 127.0.0.1,不响应 localhost 解析 —— 改成 "127.0.0.1:27017" 更稳
  • 日志里出现 Failed to connect to … No route to host,基本是某节点没起来,或防火墙/杀软拦截了非标准端口

初始化后立刻检查什么?

连上主节点执行 rs.status() 后,重点看这三项:

mongodb-query
mongodb-query

用于调试和故障排查,查询MongoDB数据库。用户需要时可以: (1) 列出所有数据库; (2) 列出数据库中的集合; (3) 执行MongoDB查询或命令。

下载
  • members[n].stateStr 应为 PRIMARY / SECONDARY / ARBITER,不能是 STARTUP 或 UNKNOWN
  • members[n].health 必须是 1,0 表示失联
  • ok 字段为 1 且 myState 是 1(主)或 2(从),才算真正就绪

如果 rs.status() 报 not master and slaveOk=false,说明你连的是从节点却没加 ?readPreference=secondary,或者没执行 rs.slaveOk()(仅 shell 临时生效)。

副本集名字和节点 host 必须严格一致

--replSet rs0 启动的每个实例,其 rs.initiate() 配置里的 _id 和所有 members[n].host 值,必须完全匹配 —— 多一个空格、大小写不一致、IP 与 hostname 混用,都会导致节点拒绝加入。

  • 推荐全用 127.0.0.1:x,避免 DNS 解析差异
  • 改配置时别直接 edit rs.conf() 返回的对象再 rs.reconfig(),容易漏掉 _id 或版本号,用 rs.reconfig(conf, {force: true}) 也得确认 version 自增
  • 一旦某个节点显示 REMOVED 状态,别急着删目录重来,先查日志里是否有 heartbeat failed 或 invalid replica set config

最麻烦的不是配不起来,而是配起来了但某个节点 silently 不同步 —— 一定要等 members[n].optime.dts 跟主节点接近,且 syncSourceHost 非空,才算真正在复制。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

mongodb

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

835

5

mongodb启动命令
mongodb启动命令

MongoDB 是一种开源的、基于文档的 NoSQL 数据库管理系统。本专题提供mongodb启动命令的文章,希望可以帮到大家。

2023.08.08

2954

5

MongoDB删除数据的方法
MongoDB删除数据的方法

MongoDB删除数据的方法有删除集合中的文档、删除整个集合、删除数据库和删除指定字段等。本专题为大家提供MongoDB相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.19

2824

5

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4569

19

mongodb有哪些应用领域
mongodb有哪些应用领域

mongodb 的应用领域涵盖广泛,包括内容管理系统、社交媒体、分析、移动应用、物联网、金融科技、医疗保健和广告技术等领域,因其灵活性、可扩展性和易用性而广受欢迎。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

978

6

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

7732

6

mongodb安装失败如何彻底删除
mongodb安装失败如何彻底删除

彻底删除 mongodb 安装失败的步骤:1、停止和禁用 mongodb 服务;2、删除配置文件、数据目录和日志文件;3、删除 mongodb 二进制文件;4、卸载 mongodb 套件(如果通过软件包管理器安装);5、删除 mongodb 用户、组和目录;6、重启系统。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

595

6

mongodb与mysql好用推荐
mongodb与mysql好用推荐

mongodb 适用于非结构化数据、高扩展性和灵活查询(如网站内容管理、社交媒体),而 mysql 适用于结构化数据、强数据一致性和联接查询(如电子商务、银行系统)。

2024.04.02

2309

9

mongodb数据库的优势有哪些
mongodb数据库的优势有哪些

mongodb 数据库以其灵活、可扩展和高性能而闻名。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2611

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MongoDB 教程
MongoDB 教程

共17课时 | 6.4万人学习

黑马云课堂mongodb实操视频教程
黑马云课堂mongodb实操视频教程

共11课时 | 3.5万人学习

MongoDB 教程
MongoDB 教程

共42课时 | 61.8万人学习