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

linux mongodb集群部署验证 mongodb集群启动_服务器


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

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

linux mongodb集群部署验证 mongodb集群启动_linux mongodb集群部署验证_02

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

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


linux mongodb集群部署验证 mongodb集群启动_单节点_03

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


linux mongodb集群部署验证 mongodb集群启动_mongodb_04

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

linux mongodb集群部署验证 mongodb集群启动_单节点_05

4、测试

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


linux mongodb集群部署验证 mongodb集群启动_服务器_06

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


linux mongodb集群部署验证 mongodb集群启动_linux mongodb集群部署验证_07

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

rs.slaveOk()

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


linux mongodb集群部署验证 mongodb集群启动_单节点_08

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

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


linux mongodb集群部署验证 mongodb集群启动_linux mongodb集群部署验证_09


linux mongodb集群部署验证 mongodb集群启动_linux mongodb集群部署验证_10

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


linux mongodb集群部署验证 mongodb集群启动_服务器_11

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

6、故障转移测试

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

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

linux mongodb集群部署验证 mongodb集群启动_单节点_12

linux mongodb集群部署验证 mongodb集群启动_linux mongodb集群部署验证_13

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

linux mongodb集群部署验证 mongodb集群启动_服务器_14

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

linux mongodb集群部署验证 mongodb集群启动_服务器_15

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

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

/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

结语:


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