在当今数据驱动的世界中,MongoDB作为一种流行的NoSQL数据库,以其灵活性和高性能而闻名。本教程将详细介绍如何在同一台机器上部署MongoDB 4.4的副本集,包括一个主节点和两个从节点,实现伪分布式架构。
环境准备
在开始之前,请确保您的系统中已安装MongoDB 4.4。如果尚未安装,请访问MongoDB官方网站下载最新版本。本教程假设您已经具备MongoDB的基本知识,并熟悉一些常用的MongoDB操作。
如已启动MongoDB请先关闭。
节点配置
我们将设置以下三个节点:
- 主节点:
localhost:27017
- 从节点1:
localhost:27018
- 从节点2:
localhost:27019
先创建3个不同文件夹以做节点。
每个节点都需要有自己的数据目录(data
)和日志目录(log
)。例如,对于主节点,您可以创建/data/db
和/data/log
目录。
启动实例
使用以下命令格式启动每个MongoDB实例:
bin/mongod --port 端口号 --dbpath 数据路径 --logpath 日志路径 --replSet 副本集名称
例如,启动从节点1的命令如下:
mongod --port 27018 --dbpath /data/db1 --logpath /data/log/mongo1.log --replSet rs0
确保为每个节点指定正确的端口、数据路径和日志路径。这些实例启动后,请保持命令行窗口开启,因为这些服务是一次性的,关闭窗口将停止服务。
节点启动
节点1
节点2
节点3
注意事项
在启动节点时,可能会遇到一些常见问题,如端口被占用或路径配置错误。在排除这些问题后,如果仍然遇到困难,请尝试以管理员身份运行命令提示符。
配置副本集
在所有节点启动后,我们需要配置副本集。连接到任意一个节点,并执行以下步骤:
- 切换到
admin
数据库:
use admin
- 定义副本集配置:
config={_id:"rs0",members:[
{_id:0,host:"localhost:27017",priority:3},
{_id:1,host:"localhost:27018",priority:2},
{_id:2,host:"localhost:27019",priority:1}
]}
在这里,_id
是副本集的唯一标识,priority
定义了节点的优先级,数字越大,优先级越高。
- 初始化副本集配置:
rs.initiate(config)
执行此命令后,副本集将开始选举过程,选择一个主节点和两个从节点。
从节点配置
默认情况下,从节点不接受写操作。如果您需要在从节点上执行操作,可以使用以下命令:
rs.slaveOk()
或者使用更推荐的命令:
rs.secondaryOk()
这将允许从节点处理读操作。
验证副本集
为了验证副本集是否配置正确,您可以在主节点上添加一些数据,然后在从节点上检查这些数据是否已同步。如果在从节点上成功检索到这些数据,那么恭喜您,副本集已成功部署。