翻译:MongoDB副本集成员。

原文

MongoDB副本集成员

复本集是MongoDB提供的一组冗余和高可用性的进程。

主服务器

主服务器接收所有写操作。

备份服务器

备份服务器的操作来自于主服务器,维护一个相同的数据集。
备份服务器可以被指定为特殊的用途,例如备份服务器可以指定为 non-voting或者priority 0.

在副本集成员中你还可以额外指定一个 arbiter,这个副本集不会保存数据。
然而, arbiter充当的角色是当主服务器挂掉后参与从备份服务器中选择一个新的主服务器。

在一个副本集中推荐最少指定三个成员:一个主服务器两个备份服务器.你也可以指定其中两个为数据载体,一个 arbiter,一个主服务器,一个备份服务器。
为了更好的冗余性能,最好指定三个成员。

在3.0.0后,一个副本集中最多有50个成员但是只有7个有投票权,在之前的版本中,一个副本集最多只有12个成员。

主服务器

主服务器是唯一一个可以接受读操作的成员,MongoDB接受在主服务器上写入然后把操作记录在 oplog。备份服务器利用这份记录里面的信息来自我更新。

在一个拥有三个成员的副本集中,主服务器接收所有的写操作,然后备份服务器复制这些操作在自己身上。

副本集上的所有成员都可以接受读操作,然而,默认情况下,应用程序默认将读操作都指向主服务器。查看 Read Preference获取改变默认行为的详细信息。

副本集中最多只能有一个主服务器。如果当前的主服务器不可用,选举机制会指定一个新的主服务器。详细信息看 Replica Set Elections

备份服务器

备份服务器主要的职责是保存主服务器的副本。要复制一份数据,备份服务器会在主服务器的oplog中找到相关的操作更新自己并且该过程运行在异步线程中。一个副本集中可以拥有一个或多个备份服务器。

虽然客户端方面不能直接将数据写入到备份服务器,但是可以从备份服务器中读取数据。查看Read Preference来获取客户端直接从备份服务器读取的详细信息。

如果当前主服务器宕机了的话,一个备份服务器可以升级为一个主服务器,副本集持有将哪个备份服务器升级为主服务器的选举算法。

查看 Replica Set Elections获取相关详细信息。

你可以将一个备份服务器指定为一个特殊的用法,备份服务器可以指定为以下用法:

  • 避免升级为主服务器,该备份服务器可以作为永远备用。
  • 避免应用程序读取它,也就是说运行在正常的分流模式下。
  • 持有"历史"快照以便在某些错误下恢复,例如无意中删除了数据库。

Arbiter

一个Arbiter不会持有数据备份,且不可能成为主数据库。数据集中Arbiter持有可以为哪个备份服务器成为主服务器而投票的权利。
Arbiter肯定会有投票权,并因此允许副本集具有不均匀数量的投票成员,而没有复制数据的额外成员的开销。

在3.6版本开始,Arbiter持有priority 0,当你将MongoDB升级为3.6并且该数据库的副本集中持有Arbiter priority 1,3.6版本会将它配置为priority 0.

重要

不要在一个持有主服务器或者备份服务器的系统上额外持有Arbiter。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • Replica Set功能 1, Replica Set是指一组服务器的集群,其中有一个主服务器,用于处理用户的请...
    持续进步者阅读 3,911评论 2 10
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,172评论 6 13
  • 深夜,如果你在无意间醒来,或许是一件快乐的事情,于是你会重新理解失眠,也许失眠并不痛苦,痛苦是失眠后的...
    海盗女王阅读 353评论 2 1
  • 每天早晨,在起床与赖床之间痛苦挣扎。 每天上午12点前出门算是成功! 即便任务迫在眉睫,仍能“从容不迫”,不忘发很...
    陈小花呵呵阅读 646评论 0 0