MongoDB 3.4 高可用集群搭建(一)单例,主从模式

时间:2022-12-22 14:56:40

一、mongodb单实例。这种配置只适合简易开发时使用,生产使用不行,因为单节点挂掉整个数据业务全挂,如下图。

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

虽然不能生产使用,但这个模式可以快速搭建启动,并且能够用mongodb的命令操作数据库。方法参加Mongo基础。

二、主从模式。使用mysql数据库时大家广泛用到,采用双机备份后主节点挂掉了后从节点可以接替主机继续服务。所以这种模式比单节点的高可用性要好很多。

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

下面看一下怎么一步步搭建一个mongodb的主从复制节点:

1、准备2个虚拟机,一个作为主服务器(192.168.4.198),一个作为从服务器(192.168.4.199),两个虚拟机都存在Mongo包。并分别在两个虚拟机上创建数据库存放文件夹。 /home/weixla/dada/db

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

2、启动主节点。 /home/weixla/mongodb-3.4.0/bin/mongod -dbpath /home/weixla/data/db -master

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

3、启动从节点。 /home/weixla/mongodb-3.4.0/bin/mongod -dbpath /home/weixla/data/db -slave -source 192.168.4.198:27017

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

4、测试

重新打开一个客户端,并连接到主节点,在主节点插入一个文档。

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

再打开一个客户端,连接到从节点,查询user集合,出现以下情况。

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

通过以下命令可以打开读的权限

MongoDB 3.4 高可用集群搭建(一)单例,主从模式rs.slaveOk()

从结果可以看到,从节点也出现了这条数据,并且自动生成的_id也是相同的。

MongoDB 3.4 高可用集群搭建(一)单例,主从模式

5、主从节点数据一致性测试

首先停掉从服务器,之后在主节点再新加一条文档,如下图。

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

MongoDB 3.4 高可用集群搭建(一)单例,主从模式

再次启动从节点,进行查询,如下图

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

从节点数据也是保存了同步。

6、故障转移测试

现在两台服务器如果主服务器挂掉了,从服务器可以正常运转吗?

首先停掉主节点,从服务器不停的扫描

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

MongoDB 3.4 高可用集群搭建(一)单例,主从模式

这个时候依然可以查询从服务器

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

注意,这个时候向从服务器写入会提示如下信息

MongoDB 3.4 高可用集群搭建(一)单例,主从模式MongoDB 3.4 高可用集群搭建(一)单例,主从模式

看起来从服务器没有自动接替主服务器的功能,只有手工处理了!

手工处理就只有先停掉从服务器,重新以作为主服务器的命令执行

 /home/weixla/mongodb-3.4.0/bin/mongod -dbpath /home/weixla/data/db -master

主节点恢复后再作为从服务器启动

 /home/weixla/mongodb-3.4.0/bin/mongod -dbpath /home/weixla/data/db -slave -source 192.168.4.199:27017


结语:

  • 主节点挂了能否自动切换连接?目前需要手工切换。
  • 主节点的写压力过大如何解决?
  • 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大?