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

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL
PostgreSQL
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地址不一样,其他都一样,然后就是在单机基础上增加了副本集的配置。
# /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。
test> rs.initiate({
... _id: "rs0",
... members: [
... {
... _id: 0,
... host: "192.168.31.192:27017"
... }
... ]
... })
{ ok: 1 }
rs0 [direct: other] test> 2.检查状态
可以看到我们这里成为了主节点(primary),当前集群hi有一个节点,如果是从节点是(SECONDARY)。
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个节点
// 添加193节点
rs.add("192.168.31.193:27017")
// 添加194节点
rs.add("192.168.31.194:27017")4.再次检查集群状态
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节点副本集就算部署完成。