副本集的主要功能

副本集是MongoDB高可用的基础,其主要作用 归纳为以下几点:

(1)高可用,防止设备(服务器、网络)故障。提供自动FailOver功能。

(2)无需配置高可用性虚拟节点;无论是SQL Server 的AlwaysOn 还是 MySQL 的 MHA方案 都需要有可用性组 或集群的虚拟IP,要求程序连接使用这个虚拟IP。但是MongoDB 副本集不需要  配置虚拟IP,而是当我们在连接字符串中指定replicaSet 参数设置 后,会自动识别查找master节点。这样 可以省去 DBA 对虚拟高可用IP的配置和管理。另外,还有一点 可以保证  主节点、辅助节点切换 对程序的影响,比如丢数据的影响。就是 程序驱动到每个几点都预先建立了一个连接,这个连接 会实时监控节点状态。当主节点切换时,会很快就识别出,这种机制保证了切换对程序的影响。

(3)灾难恢复,当发生故障时,可以从其它节点快速恢复。

(4)功能隔离,用于分析、报表,数据挖掘,系统任务等。用于备份。

副本集节点属性介绍

复制集成员最多50个。参与Primary选举投票的成员最多7个,其他成员的votes属性必须设置为0,即不参与投票。

下面我们对副本集的节点做下梳理。

一般而言,副本集节点有3中类型,主节点(Primary)、辅助节点(Secondary)、见证节点(Arbiter)。

主节点(Primary)

这个节点也比较容易理解。和其他数据库上的主节点一样,可以提供读写。再次不再赘述。

见证节点(Arbiter

没有数据副本,不会成为Primary节点,主要用来选举投票。

当副本集的节点数据为偶数时,可以考虑添加一个见证节点。

见证节点因为没有数据,只是投票,所以见证节点需要的资源很小,可以和其他应用公用一台服务器,但是不建议将见证节点部署在副本集的主节点或辅助节点节点上。

辅助节点(Secondary)

辅助节点也基本上和其他类型数据库的辅助节点一样,可以充当备胎。我们在此主要讲一讲 辅助节点可以设置的几个属性。

设置为优先级为0的节点

优先级为0的节点的特点

1)不会升级为主节点。但是却可以投票。

2)此节点正常参与Primary产生的oplog的读取,进行数据备份和命令执行。

3)此节点可正常参与客户端对于数据的读取,进行担当负载均衡的工作。

4)在write concern 设置中,此节点是可见的,在决定w : <number>.时,是有用节点。与属性votes =0 不同。

Priority=0在mongoDB中的解释就是一个Standby,可投票不可参选,又干活又负载。对于Priority为0节点的情况,通常作为一个standby,或由于硬件配置较差,设置为0以使用不可能成为主。

此节点在数据多中心时很有用。可以将异地的数据节点添加这种属性。

隐藏节点(Hidden

字面上来说,隐藏。这个隐藏式对客户端的隐藏,客户端如果要读取Secondary的数据,永远无法读取Hidden节点的数据,因为设置了Hidden的这个节点对于客户端是透明的,不可见。但是,对于自己的Secondary的群体和Primary来说都是可见的,所以,Hidden依然可以投票,依然要按照oplog进行命令的复制,只是,不参与负载了。

Hidden属性的前提是必须是一个Priority=0的节点,所以会具备一些优先级=0的特点。

1)Hidden节点不能被选为主(Priority为0),并且对Driver不可见。

2)但在Hidden节点上,可做一些数据备份、离线计算的任务,不会影响复制集的服务

3)隐藏节点成员建议总是将其优先级设置为0(priority 0)

4)由于对Driver不可见,因此不会作为read preference节点,隐藏节点可以作为投票节点

5)在分片集群当中,mongos不会同隐藏节点交互。

延迟节点(Delayed

延迟比较容易理解,代表此节点的数据与Primary的数据有一定的迟延,通过设定一个迟延的属性来确定。

1)此节点必须是一个Priority=0且为Hidden的节点。

2)此节点虽然又迟延又Hidden,但是还是可以投票。

3)延迟单位设置为秒。

节点属性如下:

{
"_id" : <num>,
"host" : <hostname:port>,
"priority" : 0,
"slaveDelay" : <seconds>,
"hidden" : true
}

非投票节点(votes:0)

我们在前面已经接受了,一个副本集最多有7个投票节点,如果还有其它的节点,需要设置为非投票节点。

非投票节点拥有数据副本,但是不参与投票。另外,非投票节点,其 priority 必须设置为 0。

MongoDB副本集功能及节点属性梳理的更多相关文章

  1. MongoDB副本集(一主两从)读写分离、故障转移功能环境部署记录

    Mongodb是一种非关系数据库(NoSQL),非关系型数据库的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模 ...

  2. mongodb副本集(选举,节点设置,读写分离设置)

    1.相对于传统主从模式的优势 传统的主从模式,需要手工指定集群中的Master.如果Master发生故障,一般都是人工介入,指定新的Master.这个过程对于应用一般不是透明的,往往伴随着应用重新修改 ...

  3. mongodb副本集的内部机制(借鉴lanceyan.com)

    针对mongodb的内部机制提出以下几个引导性的问题: 副本集故障转移,主节点是如何选举的?能否手动干涉下架某一台主节点. 官方说副本集数量最好是奇数,为什么? mongodb副本集是如何同步的?如果 ...

  4. mongodb 副本集之入门篇

    作者: 凹凸曼-军军 前言:mongodb 因为高性能.高可用性.支持分片等特性,作为非关系型数据库被大家广泛使用.其高可用性主要是体现在 mongodb 的副本集上面(可以简单理解为一主多从的集群) ...

  5. MongoDB副本集学习(三):性能和优化相关

    Read Preferences/读写分离 有时候为了考虑应用程序的性能或响应性,为了提高读取操作的吞吐率,一个常见的措施就是进行读写分离,MongoDB副本集对读写分离的支持是通过Read Pref ...

  6. MongoDB 副本集的原理、搭建、应用

    概念: 在了解了这篇文章之后,可以进行该篇文章的说明和测试.MongoDB 副本集(Replica Set)是有自动故障恢复功能的主从集群,有一个Primary节点和一个或多个Secondary节点组 ...

  7. mongodb副本集配置

    需要用到mongodb的时候单个实例肯定是不行的,挂了怎么办,那然后呢,跟mysql一样搞主从备份吗,是可以的mongodb这么弄,不过官网已经不推荐了这么干了,推荐使用副本集的模式,然后数据再大一点 ...

  8. mongodb副本集原理及部署记录

    工作原理 1.副本集之间的复制是通过oplog日志现实的.备份节点通过查询这个集合就可以知道需要进行复制的操作 2.oplog是节点中local库中的一个固定的集合,在默认情况下oplog初始化大小为 ...

  9. mongodb副本集高可用架构

    一.简介 Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点. Mongodb Driver(客户端)的所有数据都写入Primary,Sec ...

随机推荐

  1. [Swift]LeetCode521. 最长特殊序列 Ⅰ | Longest Uncommon Subsequence I

    Given a group of two strings, you need to find the longest uncommon subsequence of this group of two ...

  2. mysql+postgresql备份与恢复

    mysql备份一个库, mysqldump  -u用户名 -p密码 [选项] [数据库名] > /备份路径/备份文件名 mysqldump -uuser -p123123 auth > / ...

  3. 8.Git分支-分支的创建与合并-01

    1.新建分支  git checkout -b <branch-name>  创建一个分支并且切换到这个分支.  git checkout -b <branch-name> = ...

  4. war包部署到腾讯云中报404的排错经历

    项目完成了部分功能,需要把项目放到公网上,方便演示讨论.本来以为挺简单的,直接将war包放到腾讯云服务器tomcat中,结果报错404,第一次碰到这种情况,于是想办法解决,花了一天的时间,终于解决了问 ...

  5. asp.net core 系列 20 EF基于数据模型创建数据库

    一.概述 本章使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core MVC 应用程序.使用迁移(migrations)基于数据模型创建数据库,是一种cod ...

  6. nginx系列 3 nginx.conf介绍(1)

    一. nginx.conf 文件结构概述 在第一篇中讲到nginx的安装,安装完后,默认的nginx服务器配置文件都存在安装目录conf中,主配置文件名为nginx.conf.下面是我linux系统安 ...

  7. 【朝花夕拾】Android性能篇之(三)Java内存回收

    在上一篇日志([朝花夕拾]Android性能篇之(二)Java内存分配)中有讲到,JVM内存由程序计数器.虚拟机栈.本地方法栈.GC堆,方法区五个部分组成.其中GC堆是一块多线程的共享区域,它存在的作 ...

  8. 机器学习之决策树一-ID3原理与代码实现

    决策树之系列一ID3原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9429257.html 应用实 ...

  9. 【WCF系列】(四)WCF客户端怎么消费服务

    WCF客户端怎么消费服务 获取服务绑定协议.绑定和地址:实现方式 SvcUtil方式:SvcUtil.exe是一个命令行工具,位于:C:\Program Files (x86)\Microsoft S ...

  10. opensuse使用zypper安装软件

    安装软件(opensuse) opensuse 通过zypper可以方便的进行软件管理,类似centos的yum 软件. 命令参考 软件包操作 搜索软件 zypper search package 安 ...