副本集的主要功能

副本集是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]LeetCode514. 自由之路 | Freedom Trail

    In the video game Fallout 4, the quest "Road to Freedom" requires players to reach a metal ...

  2. [Swift]LeetCode809. 情感丰富的文字 | Expressive Words

    Sometimes people repeat letters to represent extra feeling, such as "hello" -> "he ...

  3. [Swift]LeetCode979. 在二叉树中分配硬币 | Distribute Coins in Binary Tree

    Given the root of a binary tree with N nodes, each node in the tree has node.val coins, and there ar ...

  4. Java高级特性--自定义一个StringBuilder的类

    案例讲解--自定义一个StringBuilder的类 一:案例设计介绍 自义一个M定yStringBuilder来实现StringBuilder的功能 二:案例设计 实现append()方法追加字符串 ...

  5. Java并发编程-volatile可见性的介绍

    要学习好Java的多线程,就一定得对volatile关键字的作用机制了熟于胸.最近博主看了大量关于volatile的相关博客,对其有了一点初步的理解和认识,下面通过自己的话叙述整理一遍. 有什么用? ...

  6. qt 共享内存 单例

        QT 进程间通信之古老的方法(内存共享)     让QT只运行一个实例     以上两篇文章中分别讲述了QSharedMemory的不同作用,第一篇讲了进程间通信,第二篇讲述了怎么让应用程序只 ...

  7. asp.net core 系列 18 web服务器实现

    一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...

  8. asp.net core 系列 12 选项 TOptions

    一.概述 本章讲的选项模式是对Configuration配置的功能扩展. 讲这篇时有个专用名词叫“选项类(TOptions)” .该选项类作用是指:把选项类中的属性与配置来源中的键关联起来.举个例,假 ...

  9. asp.net core 系列 6 MVC框架路由(下)

    一.URL 生成 接着上篇讲MVC的路由,MVC 应用程序可以使用路由的 URL 生成功能,生成指向操作的 URL 链接. 生成 URL 可消除硬编码 URL,使代码更稳定.更易维护. 此部分重点介绍 ...

  10. RabbitMQ消息队列(三)-Centos7下安装RabbitMQ3.6.1

    如果你看过前两章对RabbitMQ已经有了一定了解,现在已经摩拳擦掌,来吧动手吧! 用什么系统 本文使用的是Centos7,为了保证对linux不太熟悉的伙伴也能轻松上手(避免折在安装的路上),下面是 ...