mongodb5.0.5版本集群搭建

前言

MongoDB 有三种集群架构模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。

Master-Slaver 是一种主从复制的模式,目前已经不推荐使用。从MongoDB 4.0版本开始,官方已经不再支持主从复制配置,转而推荐使用更先进的副本集(Replica Set)架构。副本集提供了自动故障转移、数据冗余和读写分离等高级功能,相比主从复制更加灵活和稳定。

Replica Set 模式取代了 Master-Slaver 模式,是一种互为主从的关系。Replica Set 将数据复制多份保存,不同服务器保存同一份数据,在出现故障时自动切换,实现故障转移,在实际生产中非常实用。

Sharding 模式适合处理大量数据,它将数据分开存储,不同服务器保存不同的数据,所有服务器数据的总和即为整个数据集。

本文以副本集搭建为例

开始搭建

mongodb服务安装我们先略过了,网上的教程一大把,直接开始讲配置

在主从节点的mongod.conf配置文件中,加入以下设置

replication:
  replSetName: "rs0"
  oplogSizeMB: 5120 #限制操作日志(oplog)的大小为5G。类似mysql的binlog,这里限制大小即限制了mongodb保留的历史数据数量,需要根据数据量、数据入库速率、宕机允许时长、磁盘总空间等综合考量,默认限制不超过50G

rs0表示集群名字,同一集群的这项配置都要相同,根据项目自己起这个名字即可,后面初始化命令会用到

启动mongodb服务

mongod -f mongod.conf

选其中任意一台作为master,在集群模式里叫做"primary"了,只有primary节点才可以写入数据,slave节点即集群模式叫做"secondary"只能读取数据。和master/slave方式不同,集群模式可以随时切换primary节点到任意secondary节点上,可以经由故障转移自动切换也可以手动命令切换

初始化集群

所有集群mongo服务启动后,登录到primary节点命令行

use admin
rs.initiate({
   _id: "netops",
   members: [
      { _id: 0, host: "10.1.3.185:27017" },
      { _id: 1, host: "10.1.3.186:27017" },
      { _id: 1, host: "10.1.3.187:27017", arbiterOnly: true } // 如果是仲裁节点
   ]
})

MongoDB集群中的仲裁节点(Arbiter)是一种特殊类型的节点,它在副本集(Replica Set)架构中扮演着关键的角色。仲裁节点的主要功能集中在参与新主节点的选举过程中,它帮助维持投票的多数原则,确保集群能够迅速且确定性地选出新的主节点。而不涉及数据的存储或复制,换句话说仲裁节点不存储任何数据副本。

这样就搭建好了,是不是很简单?随后就能看到数据从主节点不断复制到从节点

*注意,mongodb集群的各个服务器,要保证数据一致性,以有数据的服务为primary,其他服务的库都置空,集群建起后,mongodb会自己拷贝数据的

一些命令

查看集群状态
rs.status()

重新配置现有的副本集
作用:rs.reconfig 用于重新配置现有的副本集。当你需要修改副本集的配置,比如添加或移除副本集成员、改变成员优先级、修改选举超时等,就需要使用这个命令。这个操作允许你在不中断整个服务的情况下动态调整副本集的结构和设置。
使用选项:通常建议使用 {force : true} 选项来避免由于大多数成员不可达而导致的配置更新失败。但是,强制重新配置可能会导致数据不一致或复制问题,因此应当谨慎使用。
rs.reconfig(
  {
    "_id": "rs0",
    "members": [
      { _id: 0, host: "10.1.3.185:27017" },
      { _id: 1, host: "10.1.3.186:27017" }
    ]
  },
  { force: true }
)

获取MongoDB实例当前的运行状态和各种统计信息。此命令返回一个详细的文档,包含了关于服务器性能、状态、硬件使用情况、存储引擎、索引、复制集信息(如果适用)、网络、内存使用、操作计数等多个方面的数据。这个命令对于监控MongoDB实例的健康状况、性能调优和故障排查极为有用
db.serverStatus()
相关推荐
bo_bo0018 小时前
MongoDB的使用
数据库·mongodb
卡布达ovo17 小时前
MongoDB入门
数据库·mongodb
fishmemory7sec20 小时前
Koa2+mongodb项目实战1(项目搭建)
数据库·mongodb·koa
晓之木初1 天前
MongoDB伪分布式部署(mac M2)
mongodb·macos
颜淡慕潇1 天前
【数据库】Java 集成mongodb— MongoTemplate 详解
java·数据库·sql·mongodb·nosql
啧不应该啊1 天前
MongoDB的安装与增删改查基本操作
数据库·mongodb
南归北隐2 天前
mongodb通过mongoimport导入JSON文件数据
数据库·mongodb
喝旺仔la2 天前
MongoDB的使用
数据库·mongodb
QQ19284999062 天前
基于单片机电容测量仪仿真设计
单片机·嵌入式硬件·mongodb
编程老船长2 天前
第9章 MongoDB聚合管道实战(一):$project操作符的应用与技巧
数据库·后端·mongodb