首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MongoDB-副本集(Replica Set)部署

MongoDB-副本集(Replica Set)部署

作者头像
运维小路
发布2026-01-26 12:50:34
发布2026-01-26 12:50:34
1080
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL

PostgreSQL

MongoDB(本章节)

Redis

Etcd

前面我们介绍了MongoDB-副本集(Replica Set)部署,那么本小节就来介绍如何搭建一个三节点的副本集。

一.环境规划

我们这里采用的还是常见的分布式集群的3节点来部署,3个节点都是普通节点,也可以使用一个节点做投票节点不存储数据,只参与投票(他和ZooKeeper的仲裁节点刚好相反)。

节点IP

节点类型

192.168.31.192

数据节点

192.168.31.193

数据节点

192.168.31.194

数据节点

二.3节点都部署相同版本的MongoDB

我们采用的是2进制方式来配置,又可以选择yum安装来实现。

三.准备三节点的配置文件,并启动

三个节点除了ip地址不一样,其他都一样,然后就是在单机基础上增加了副本集的配置。

代码语言:javascript
复制
# /etc/mongod.conf
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27017
  bindIp: 192.168.31.192

replication:             #增加配置 
  replSetName: rs0       #增加配置 

processManagement:
  fork: true
  pidFilePath: /var/run/mongodb/mongod.pid

四.配置集群

1.初始化

连接到其中一台主机,我们这里选择的是192。

代码语言:javascript
复制
test> rs.initiate({
...   _id: "rs0",
...   members: [
...     {
...       _id: 0,
...       host: "192.168.31.192:27017"
...     }
...   ]
... })
{ ok: 1 }
rs0 [direct: other] test> 

2.检查状态

可以看到我们这里成为了主节点(primary),当前集群hi有一个节点,如果是从节点是(SECONDARY)。

代码语言:javascript
复制
rs0 [direct: other] test> rs.status()
{
  set: 'rs0',
  date: ISODate('2025-11-20T15:35:55.782Z'),
 # 省略部分信息
  members: [
    {
      _id: 0,
      name: '192.168.31.192:27017',
      health: 1,
      state: 1,
      stateStr: 'PRIMARY',
      uptime: 474,
      optime: { ts: Timestamp({ t: 1763652948, i: 1 }), t: Long('1') },
      optimeDate: ISODate('2025-11-20T15:35:48.000Z'),
      lastAppliedWallTime: ISODate('2025-11-20T15:35:48.545Z'),
      lastDurableWallTime: ISODate('2025-11-20T15:35:48.545Z'),
      syncSourceHost: '',
      syncSourceId: -1,
      infoMessage: 'Could not find member to sync from',
      electionTime: Timestamp({ t: 1763652927, i: 2 }),
      electionDate: ISODate('2025-11-20T15:35:27.000Z'),
      configVersion: 1,
      configTerm: 1,
      self: true,
      lastHeartbeatMessage: ''
    }
  ],
  ok: 1,
  '$clusterTime': {
    clusterTime: Timestamp({ t: 1763652948, i: 1 }),
    signature: {
      hash: Binary.createFromBase64('AAAAAAAAAAAAAAAAAAAAAAAAAAA=', 0),
      keyId: Long('0')
    }
  },
  operationTime: Timestamp({ t: 1763652948, i: 1 })
}
rs0 [direct: primary] test> 

3.添加后续2个节点

代码语言:javascript
复制
// 添加193节点
rs.add("192.168.31.193:27017")

// 添加194节点
rs.add("192.168.31.194:27017")

4.再次检查集群状态

代码语言:javascript
复制
  members: [
    {
      _id: 0,
      name: '192.168.31.192:27017',
      health: 1,
      state: 1,
      stateStr: 'PRIMARY',
    },
    {
      _id: 1,
      name: '192.168.31.193:27017',
      health: 1,
      state: 2,
      stateStr: 'SECONDARY',
    },
    {
      _id: 2,
      name: '192.168.31.194:27017',
      health: 1,
      state: 2,
      stateStr: 'SECONDARY',
    }
  ],

这个时候我们的3节点副本集就算部署完成。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB(本章节)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档