本文主要介绍如何在本地搭建一个 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
|
粘贴下面的代码,查看服务是否正常启动
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 就搭建完成了。