mongodb是nosql数据库吗 2 NoSQL | MongoDB入门实战教程


mongodb是nosql数据库吗 2 NoSQL | MongoDB入门实战教程

文章插图
| 总结/Edison Zhou
上一篇我们了解了MongoDB的基本概念与单节点环境搭建,本篇我们来学习如何搭建一个高可用的复制集集群 。
1 关于MongoDB复制集MongoDB复制集的主要意义在于实现服务的高可用,它是MongoDB的一个原生的高可用设计,不需我们额外引入一些组件来实现,因此实现起来相当便利 。
主要功能
一是数据写入时将数据迅速地复制到另一个独立的节点上;
二是在接受写入的节点发生故障时自动选举出一个新的替代节点;
附加功能
数据分发:将数据从一个区域复制到另一个区域,减少另一个区域的度延迟;
读写分离:不同类型的压力分别在不同的节点上执行;
异地容灾:在数据中心故障时快速切换到异地;
典型结构
一个典型的MongoDB复制集由3个以上具有投票权的节点组成:
(1)一个主节点(Primary),接受写入操作和选举时投票;
(2)两个(或多个)从节点(Secondary),复制主节点上的新数据和选举时投票;
mongodb是nosql数据库吗 2 NoSQL | MongoDB入门实战教程

文章插图
如何复制
当一个Mongo的修改操作(CRUD)成功,在主节点时它对数据的操作会被记录下来,这些记录被称为oplog,并传递给从节点 。从节点通过不断获取新进入主节点的oplog,并在自己的数据上进行回放,以此保持和主节点的数据一致 。
mongodb是nosql数据库吗 2 NoSQL | MongoDB入门实战教程

文章插图
如何选举
具有投票权的节点之间两两互相发送心跳,当5次心跳未收到时则会判断节点为失联 。如果失联的是主节点,从节点会发起选举,选出新的主节点 。如果失联的是从节点,不会产生新的选举 。
mongodb是nosql数据库吗 2 NoSQL | MongoDB入门实战教程

文章插图
整个选举过程基于Raft一致性算法实现,选举成功的必要条件是大多数投票节点存活(这也是为啥大多数需要选举的中间件集群要保持奇数个节点的原因),整个复制集中可以<=50个,但具有投票权的节点<=7个 。
2 实践准备工作准备VMware Workstation
跟上一篇一样,这次我们仍然会通过VMware Workstation启动几个虚拟机来完成搭建实践 。
准备三台CentOS 7.x虚拟机
这里模拟的是三个Mongo节点的主从复制集,因此分别命名为mongo-master、mongo-slave1、mongo-slave2 。
mongodb是nosql数据库吗 2 NoSQL | MongoDB入门实战教程

文章插图
为了较好的模拟,在三个虚拟机中分别配置一下hosts文件:
vi /etc/hosts在hosts文件中加入以下内容(IP地址为你配置的虚拟机IP):
192.168.58.100 mongo-master192.168.58.101 mongo-slave1192.168.58.102 mongo-slave2可以验证一下能否通过主机名互相ping通 。
下载Mongo Server到三台虚拟机
下载地址:https://www.mongodb.com/try/download/community
目前Server社区版最新版本为4.4.5:
mongodb是nosql数据库吗 2 NoSQL | MongoDB入门实战教程

文章插图
这里,我们复制到的目录假设为:/usr/local/mongodb/tgz
复制完成后,分别进行解压压缩包,然后将其重命名:
tar -zvxf mongodb-linux-x86_64-rhel70-4.4.5.tgzmv ./mongodb-linux-x86_64-rhel70-4.4.5 /usr/local/mongodb准备三个Mongo节点的目录和文件
进入目录:cd /usr/local/mongodb
创建db目录:mkdir /usr/local/mongodb/data/db
创建日志目录:mkdir /usr/local/mongodb/logs
创建日志文件:touch /usr/local/mongodb/logs/mongodb.log


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: