**注意事项:**本博客的实验环境为mongodb4.x 版本

0 前期准备工作

1.下载mongod数据库

sudo wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.29.tgz

2.使用以下命令解压压缩包。

tar -zxvf mongodb-linux-x86_64-rhel70-4.4.29.tgz
  1. 将解压后的目录移动到 /usr/local 目录下,并改名为 mongodb 。
mv mongodb-linux-x86_64-rhel70-4.4.29.tgz  /usr/local #移动目录
mv mongodb-linux-x86_64-rhel70-4.4.29 mongodb#重新命名

通过上述方式可完成如教程一样的配置路径,从而确保mongod可以启动,若需在所有目录下均可启动mongod,则需配置环境变量,具体配置过程可参考博客描述

以下为MongoDB复制集的完整搭建过程:

1.创建数据目录

sudo mkdir -p /usr/local/mongodb/data/db1 /usr/local/mongodb/data/db2 /usr/local/mongodb/data/db3 /usr/local/mongodb/data/db4  # 数据目录:一主两从一仲裁

2.创建配置文件存放目录

sudo mkdir -p /usr/local/mongodb/data/conf  # 用来放每个实例的独立配置文件

3. 创建日志存放目录,并创建一主两从一仲裁的日志文件

sudo mkdir -p /usr/local/mongodb/data/logs  # 放所有实例的日志文件
# touch创建日志文件
sudo touch /usr/local/mongodb/data/logs/db1.log
sudo touch /usr/local/mongodb/data/logs/db2.log
sudo touch /usr/local/mongodb/data/logs/db3.log
sudo touch /usr/local/mongodb/data/logs/db4.log
# 修改目录权限,确保root用户可读写
sudo chown -R root:root /usr/local/mongodb

4.创建进程描述文件目录

sudo mkdir -p /usr/local/mongodb/data/pids  # 存放mongod进程的pid文件(管理方便)

5.分别对一主两从一仲裁节点的配置文件进行编辑

db1.conf的配置如下:

# /usr/local/mongodb/data/conf/db1.conf
systemLog:
  destination: file
  path: /usr/local/mongodb/data/logs/db1.log
  logAppend: true
storage:
  dbPath: /usr/local/mongodb/data/db1
net:
  bindIp: 0.0.0.0
  port: 27017
replication:
  replSetName: rs0
processManagement:
  pidFilePath: /usr/local/mongodb/data/pids/db1.pid

db2.conf的配置如下:

#/usr/local/mongodb/data/conf/db2.conf
systemLog:
  destination: file
  path: /usr/local/mongodb/data/logs/db2.log
  logAppend: true
storage:
  dbPath: /usr/local/mongodb/data/db2
net:
  bindIp: 0.0.0.0
  port: 27018
replication:
  replSetName: rs0
processManagement:
  pidFilePath: /usr/local/mongodb/data/pids/db2.pid

db3.conf的配置如下:


#/usr/local/mongodb/data/conf/db3.conf
systemLog:
  destination: file
  path: /usr/local/mongodb/data/logs/db3.log
  logAppend: true
storage:
  dbPath: /usr/local/mongodb/data/db3
net:
  bindIp: 0.0.0.0
  port: 27019
replication:
  replSetName: rs0
processManagement:
  pidFilePath: /usr/local/mongodb/data/pids/db3.pid

db4.conf的配置如下:

#/usr/local/mongodb/data/conf/db4.conf
systemLog:
  destination: file
  path: /usr/local/mongodb/data/logs/db4.log
  logAppend: true
storage:
  dbPath: /usr/local/mongodb/data/db4
net:
  bindIp: 0.0.0.0
  port: 27020
replication:
  replSetName: rs0
processManagement:
  pidFilePath: /usr/local/mongodb/data/pids/db4.pid

配置完成后即可启动服务

6.启动服务

# 启动主节点
mongod -f /usr/local/mongodb/data/conf/db1.conf --fork
# 启动从节点1
mongod -f /usr/local/mongodb/data/conf/db2.conf --fork
# 启动从节点2
mongod -f /usr/local/mongodb/data/conf/db3.conf --fork
# 启动仲裁节点
mongod -f /usr/local/mongodb/data/conf/db4.conf --fork

7.连接主节点初始化复制集

mongo --port 27017#mongodb新的版本已不自带mongo shell工具,因此本教程采用mongodb4.x版本演示

连接后使用use admin切换admin数据库,进行初始化

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "localhost:27017" },
    { _id: 1, host: "localhost:27018" },
    { _id: 2, host: "localhost:27019" },
    { _id: 3, host: "localhost:27020", arbiterOnly: true }
  ]
})

查看复制集状态
查看进程ps -ef | grep mongod
端口号监听netstat -tunlp | grep 27017

rs.status()

8.验证插入测试数据

1.在mongo shell中(仍然是27017端口的主节点):
1.1新建数据库

use testdb
db.testcol.insertOne({name: "hello replica set"})

1.2查询

db.testcol.find()

2.副节点验证
2.1 连接副数据库

mongo --port 27018

2.2mongo shell里面去读取数据

rs.slaveOk()  // 允许从节点读数据
use testdb
db.testcol.find()

参考资料:
[1]CentOS7安装MongoDB;
[2]AI工具:ChatGPT-4odeepseek

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐