欢迎光临
我们一直在努力

mongoDB 实现主从读写分离实现的实例代码

在分布式系统中,主从读写分离是一种常见的架构模式,它可以有效地提高系统的并发处理能力和数据可靠性,MongoDB 作为一款流行的 NoSQL 数据库,也支持主从读写分离的实现,本文将介绍如何使用 MongoDB 实现主从读写分离的实例代码。

1、环境准备

我们需要准备两台服务器,一台作为主节点(master),另一台作为从节点(slave),确保两台服务器都已经安装了 MongoDB,并且版本相同。

2、配置主节点

在主节点上,我们需要修改 MongoDB 的配置文件(通常位于 /etc/mongod.conf),添加以下内容:

开启副本集
replication:
   指定副本集名称
  replSetName: "rs0"

重启主节点的 MongoDB 服务:

sudo service mongod restart

3、配置从节点

在从节点上,我们需要修改 MongoDB 的配置文件(通常位于 /etc/mongod.conf),添加以下内容:

开启副本集
replication:
   指定副本集名称
  replSetName: "rs0"
   指定主节点的地址和端口
  primary: "主节点IP:端口"

重启从节点的 MongoDB 服务:

sudo service mongod restart

4、创建数据库和集合

在主节点上,我们可以创建一个数据库和一个集合,用于演示读写分离的效果:

use testDB;
db.createCollection("testCollection");

5、主从同步

当主节点和从节点都配置好后,MongoDB 会自动进行主从同步,我们可以通过以下命令查看同步状态:

rs.status()

6、读写分离实现

在应用程序中,我们可以通过设置连接字符串来实现读写分离,对于 Node.js 的 Mongoose 库,我们可以这样设置:

const mongoose = require("mongoose");
mongoose.connect("mongodb://从节点IP:端口/testDB", { useNewUrlParser: true, useUnifiedTopology: true });

这样,当我们执行读操作时,MongoDB 会将请求转发到从节点;而执行写操作时,仍然会发送到主节点,从而实现了读写分离的效果。

7、故障恢复与高可用性

当主节点出现故障时,MongoDB 会自动选举一个新的主节点,并将写操作迁移到新的主节点,从节点会继续提供读服务,保证系统的高可用性,我们可以通过以下命令查看当前的主节点状态:

rs.status()

8、注意事项

在实际应用中,建议使用多个从节点,以提高系统的读取能力,只需将每个从节点的 primary 字段设置为相同的主节点地址即可。

如果需要在从节点上执行写入操作,可以使用 --slaveOk 参数启动 MongoDB:mongod --slaveOk --port <端口>,但请注意,这会导致数据的不一致风险,建议尽量避免在从节点上执行写入操作。

如果需要手动触发主从同步,可以在主节点上执行 rs.stepDown() 命令,这将导致主节点停止接受写操作,并等待所有正在执行的写操作完成后,将主节点的角色移交给指定的从节点,我们可以在新的主节点上执行 rs.stepUp() 命令,使其开始接受写操作。

赞(0) 打赏
未经允许不得转载:九八云安全 » mongoDB 实现主从读写分离实现的实例代码

评论 抢沙发