MongoDB 3.4 高可用集群搭建(二)replica set 副本集

NoSQL的产生就是为了解决大数据量、高扩展性、高性能、灵活数据模型、高可用性。但是光通过主从模式的架构远远达不到上面几点,由此MongoDB设计了副本集和分片的功能。

mongodb官方已经不建议使用主从模式了,替代方案是采用副本集的模式:

那什么是副本集呢?

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第1张图片

由图可以看到客户端连接到整个副本集,不关心具体哪一台机器是否挂掉。主服务器负责整个副本集的读写,副本集定期同步数据备份,一但主节点挂掉,副本节点就会选举一个新的主服务器,这一切对于应用服务器不需要关心。我们看一下主服务器挂掉后的架构:

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第2张图片

官方推荐的副本集机器数量为至少3个,如果已经有挂掉一个节点,再挂掉一个,剩下的最后一个不会自动成为新的主节点。

1、准备3个虚拟机:192.168.4.198,192.168.4.199,192.168.4.200,都下载并解压好Mongo包。并分别在三个虚拟机上创建数据库存放文件夹。 /home/weixla/dada/db

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第3张图片

2、分别以副本集模式启动三个虚拟器的MongoDB服务,

/home/weixla/mongodb-3.4.0/bin/mongod -dbpath /home/weixla/data/ --replSet TestReplicaSet

可以看到控制台上显示副本集还没有配置初始化信息。

3、初始化副本集

登录任意一台客户端(这里登录198那台的客户端),切换到admin数据库

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第4张图片

定义副本集配置变量,其中_id为上面定义的副本集名称

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第5张图片

初始化副本集rs.initiate(config)

服务端打印大量日志,目的就是通过选举策略选出主节点和副节点

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第6张图片

在客户端查看副本集状态rs.status()

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第7张图片
MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第8张图片

4、测试数据复制

在主节点插入一条数据

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第9张图片

连接副节点进行查询

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第10张图片

mongodb默认是从主节点读写数据的,副本节点上不允许读(更不能写入),需要设置副本节点可以读

这里测试结果达到预期一样,在副本节点数据进行了同步。

5、测试故障转移

首先停掉主节点,这里会打印大量日志,大概是重新选举相关操作。

查看副本集节点

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第11张图片

再查看其它两个节点,这里201(就是199,IP被占用了)保持为副节点,200却成为了主节点。

MongoDB 3.4 高可用集群搭建(二)replica set 副本集_第12张图片

目前看起来支持完美的故障转移了

转:http://blog.csdn.net/vellin/article/details/53897827、http://blog.csdn.net/vellin/article/details/53994014

你可能感兴趣的:(MongoDB 3.4 高可用集群搭建(二)replica set 副本集)