搭建一个 mongo replica set

本文主要介绍如何在本地搭建一个 3 节点的mongo replica set。

准备工作

  • 在官方的 下载中心 选择对应平台的安装包,解压并安装完成
  • 将 mongod 以及配套的工具路径加入 $PATH
  • 命令行终端

打开命令行,输入如下的代码:

1
mongod --dbpath <data_dir> --port 27017

上面的代码将会启动一个 mongod 的实例,监听 27017 端口。所有的数据都会存放在指定的 data_dir

搭建 Replica Set

1. 创建存放数据的目录

MongoDB 需要一个数据目录来存放所有的数据文件,

打开命令行,并输入下面的代码

1
2
$ cd ~
$ mkdir -p data/db{1,2,3}

上面的代码将会在用户的家目录下创建 data 目录,并在 data 下创建 db1, db2, db3 三个文件夹,分别用于存储三个节点的数据文件

2. 准备配置文件

正常情况下,三个节点的实例会运行在三个不同的服务器上,现在为了测试,需要在本地启动三个进程,因此需要三个不同的配置文件,并且满足下面的需求

  • 服务需要监听三个不同的端口,分别是 27017, 27018, 27019
  • 三个不同的数据存放目录,在第一步中以及创建好了
  • 三个不同位置的日志文件,分别是 ~/data/db1/mongod.log, ~/data/db2/mongod.log, ~/data/db3/mongod.log

创建 db1 的配置文件,在命令行下粘贴下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ cat << EOF > ~/data/db1/mongod.conf
> systemLog:
> destination: file
> path: ~/data/db1/mongod.log # 日志文件路径
> logAppend: true
> storage:
> dbPath: ~/data/db1 # 数据目录
> net:
> bindIp: 0.0.0.0
> port: 27017 # 端口
> replication:
> replSetName: rs0
> processManagement:
> fork: true
> EOF

创建 db2 的配置文件,在命令行下粘贴下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ cat << EOF > ~/data/db2/mongod.conf
> systemLog:
> destination: file
> path: ~/data/db2/mongod.log # 日志文件路径
> logAppend: true
> storage:
> dbPath: ~/data/db2 # 数据目录
> net:
> bindIp: 0.0.0.0
> port: 27018 # 端口
> replication:
> replSetName: rs0
> processManagement:
> fork: true
> EOF

创建 db3 的配置文件,在命令行下粘贴下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ cat << EOF > ~/data/db3/mongod.conf
> systemLog:
> destination: file
> path: ~/data/db3/mongod.log # 日志文件路径
> logAppend: true
> storage:
> dbPath: ~/data/db3 # 数据目录
> net:
> bindIp: 0.0.0.0
> port: 27019 # 端口
> replication:
> replSetName: rs0
> processManagement:
> fork: true
> EOF

3. 启动进程

在命令行下粘贴下面的代码

1
2
3
$ mongod -f ~/data/db1/mongod.conf
$ mongod -f ~/data/db2/mongod.conf
$ mongod -f ~/data/db3/mongod.conf

粘贴下面的代码,查看服务是否正常启动

1
$ ps -ef | grep mongo

4. 配置

在命令行下粘贴下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ mongo
> rs.initiate({
_id: "rs0",
members: [{
_id: 0,
host: "localhost:27017"
},{
_id: 1,
host: "localhost:27018"
},{
_id: 2,
host: "localhost:27019"
}]
})
> rs.status()

上面的代码会连接 mongod 1,并打开 mongo shell,然后在 mongo shell 中初始化了 rs,完成后使用 rs.status()查看 rs 的信息。

至此,一个单机版的 replica set 就搭建完成了。


搭建一个 mongo replica set
https://blog.zhangliangliang.cc/post/build-local-mongo-rs.html
作者
Bobby Zhang
发布于
2022年3月7日
许可协议