在 Linux 上安装 MongoDB 副本集是构建可靠且具有高可用性的 MongoDB 集群的一种常见方式。在这篇文章中,我们将介绍如何在 Linux 上安装 MongoDB 副本集。
安装 MongoDB
首先,我们需要在 Linux 上安装 MongoDB。MongoDB 提供了多种不同的安装方式,包括二进制发行版、RPM 包和 Debian/Ubuntu 包等。本文将使用二进制发行版安装 MongoDB。
下载 MongoDB 的二进制发行版 我们可以从 MongoDB 的官网(https://www.mongodb.com/)下载最新的二进制发行版。在本文中,我们将使用 MongoDB 5.0 版本。在下载完成后,解压缩文件:
代码语言:javascript复制tar xzf mongodb-linux-x86_64-5.0.3.tgz
将 MongoDB 添加到 PATH 环境变量中 为了方便使用 MongoDB,我们需要将其添加到 PATH 环境变量中。可以将以下命令添加到 shell 配置文件中:
代码语言:javascript复制export PATH=<mongodb-install-directory>/bin:$PATH
创建 MongoDB 数据目录 在启动 MongoDB 之前,我们需要先创建 MongoDB 数据目录。可以使用以下命令创建数据目录:
代码语言:javascript复制mkdir -p /data/db
注意,MongoDB 默认会将数据存储在 /data/db 目录下,如果需要修改数据目录,请使用 --dbpath 选项。
启动 MongoDB
安装 MongoDB 后,我们需要启动 MongoDB 服务。可以使用以下命令启动 MongoDB:
代码语言:javascript复制mongod --replSet rs0
在上面的命令中,--replSet 选项指定了 MongoDB 副本集的名称。我们将其设置为 rs0。
初始化副本集
启动 MongoDB 后,我们需要初始化 MongoDB 副本集。可以使用以下命令连接到 MongoDB:
代码语言:javascript复制mongo
在连接成功后,我们需要初始化 MongoDB 副本集。可以使用以下命令:
代码语言:javascript复制rs.initiate()
该命令将会创建一个包含当前节点的副本集,并将当前节点设置为主节点。
添加从节点
现在,我们已经成功地创建了一个包含一个主节点的 MongoDB 副本集。接下来,我们将向该副本集中添加一个从节点。
- 启动第二个 MongoDB 实例 在添加从节点之前,我们需要先启动第二个 MongoDB 实例。可以使用以下命令启动第二个 MongoDB 实例: cssCopy codemongod --port 27018 --replSet rs0 在上面的命令中,--port 选项指定了 MongoDB 实例的端口号,--replSet 选项指定了副本集的名称。
- 将从节点添加到副本集中 在启动第二个 MongoDB 实例后,我们需要将其添加到副本集中。可以使用以下命令连接到主节点并添加从节点:
mongo --port 27017
rs.add("localhost:27018")
在上面的命令中,rs.add("localhost:27018") 命令将第二个 MongoDB 实例添加到副本集中。请注意,我们在连接到主节点时使用了端口号 27017,这是主节点的默认端口号。
查看副本集状态
添加从节点后,我们可以使用以下命令查看副本集的状态:
代码语言:javascript复制rs.status()
该命令将返回一个包含副本集状态信息的 JSON 对象,其中包含有关主节点、从节点和副本集的其他信息。
使用副本集
在安装和配置 MongoDB 副本集后,我们可以使用其提供的高可用性和容错性功能。在默认情况下,MongoDB 客户端将自动将写操作发送到主节点,并从副本集中选择可用的节点进行读操作。如果主节点不可用,副本集将自动选择一个新的主节点,并将客户端的写操作路由到该节点。
以下是使用 MongoDB 副本集的一些常见示例:
- 连接到副本集 在连接到 MongoDB 副本集时,可以指定一个由多个节点组成的连接字符串。例如: rubyCopy codemongodb://localhost:27017,localhost:27018/?replicaSet=rs0 在上面的连接字符串中,replicaSet 参数指定了副本集的名称。
- 读操作 在读操作中,MongoDB 客户端将从副本集中选择一个可用的节点进行读取。例如: luaCopy codedb.collection.find() 在上面的命令中,MongoDB 客户端将从副本集中选择一个可用的节点进行查询。
- 写操作 在写操作中,MongoDB 客户端将写操作发送到主节点,并等待主节点将写操作同步到所有从节点。例如: cssCopy codedb.collection.insertOne({key: "value"}) 在上面的命令中,MongoDB 客户端将写操作发送到主节点,并等待主节点将写操作同步到所有从节点。