Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mongoDB复制(译 v4.0)

mongoDB复制(译 v4.0)

作者头像
shirley
修改于 2019-06-28 15:15:13
修改于 2019-06-28 15:15:13
1K0
举报
文章被收录于专栏:进击的全栈进击的全栈
  • 冗余和数据可用性
  • MongoDB中的复制
  • 异步复制
  • 自动故障转移
  • 读操作
  • 事务
  • 变更流
  • 其它功能

注: MongoDB Atlas上托管的所有数据库都配置为副本集。 Atlas可以轻松添加和删除首选云提供商的任何区域中的副本集成员。注册MongoDB Atlas

MongoDB中的副本集是一组维护相同数据集的mongod进程。副本集提供冗余和高可用性,是所有生产部署的基础。本节介绍MongoDB中的复制以及副本集的组件和体系结构。该部分还提供了与副本集相关的常见任务的教程。

冗余和数据可用性

复制提供冗余并提高数据可用性。通过在不同数据库服务器上提供多个数据副本,复制可提供一定级别的容错功能,以防止丢失单个数据库服务器

在某些情况下,复制可以提供更强的读取能力,因为客户端可以将读取操作发送到不同的服务器。在不同数据中心维护数据副本可以增加分布式应用程序的数据位置和可用性。您还可以为专用目的维护其他副本,例如灾难恢复,报告或备份。

MongoDB中的复制

副本集是一组维护相同数据集的mongod实例。副本集包含多个数据承载节点和可选的一个仲裁节点。在承载数据的节点中,有且仅有一个成员被视为主节点,而其他节点被视为从节点。

主节点接收所有写操作。副本集只能有一个能够确认具有写入关注的写入的主节点;虽然在某些情况下,另一个mongod实例可能暂时认为自己也是主节点。[1]主节点将所有的变更记录到它的操作日志的数据集中,即oplog。有关主节点操作的详细信息,请参阅副本集主节点

Replication in MongoDB
Replication in MongoDB

从节点复制主节点的oplog并将操作应用于其数据集,以使从节点的数据集反映主节点的数据集。 如果主节点不可用,则符合条件的从节点将有机会选择它自己成为主节点。 有从节点成员的详细信息,请参阅副本集从节点成员

Replication in MongoDB
Replication in MongoDB

您可以将额外的mongod实例添加到副本集作为仲裁者。 仲裁者不维护数据集。 仲裁者的目的是通过响应其他副本集成员的心跳和选举请求来维护副本集中的仲裁。 因为它们不存储数据集,所以仲裁者是一个提供副本集仲裁功能的好方法,其资源消耗成本比具有数据集的全功能副本集成员更低。 如果您的副本集具有偶数个成员,请添加仲裁者以获得主要选举中的大多数投票。 仲裁者不需要专用硬件。 有关仲裁器的更多信息,请参阅副本集仲裁者

Replication in MongoDB
Replication in MongoDB

仲裁者将永远是仲裁者,而主节点有可能降级成为从节点,而从节点可能在一次选举期间成为主节点。

异步复制

从节点异步应用主节点的操作。 通过在主节点之后应用操作,尽管一个或多个成员失败,但集合仍可继续运行。 有关复制机制的详细信息,请参阅副本集Oplog副本集数据同步

副本集的从节点现在记录oplog项的时间要比应用的慢操作阈值长。在REPL组件下的诊断日志中为从节点记录这些慢速oplog消息,其应用的文本 op 是:<oplog entry> took <num>ms。 这些慢oplog条目仅取决于慢速操作阈值。 它们不依赖于日志级别(系统级别或组件级别),性能分析级别或慢操作采样率。 分析器不捕获慢速oplog条目。 有关更多信息,请参阅慢Oplog应用程序

自动故障转移

当主节点超过配置的electionTimeoutMillis(默认为10秒)不能与集合的其它成员通信时,符合条件的从节点要求选举将自己指定为新主节点。 群集尝试完成新主节点的选举并恢复正常操作。

Replication in MongoDB
Replication in MongoDB

在选举成功完成之前,副本集无法处理写入操作。 如果查询被配置为主节点脱机时在从节点上运行,则副本集可以继续提供读取查询。

假设是默认的副本配置设置,群集选择新主节点之前的中位时间通常不应超过12秒。 这包括将主节点标记为不可用并调用和完成一次选举所需的时间。 您可以通过修改复制配置选项settings.electionTimeoutMillis来调整此时间段。 网络延迟等因素可能会延长副本集选举完成所需的时间,从而影响群集在没有主节点的情况下运行的时间。 这些因素取决于您的特定群集体系结构。

将复制配置选项electionTimeoutMillis从默认的10000(10秒)降低可以更快地检测到主节点故障。 但是,由于诸如临时网络延迟等因素,群集可能会更频繁地调用选举,即使主节点是正常的。 这可能导致w:1写入操作的回滚增加。

您的应用程序连接逻辑应包括自动故障转移和后续选举的容差。

版本3.6中的新功能:MongoDB 3.6+驱动程序可以检测主数据库的丢失并自动重试某些写操作一次,从而提供额外的内置自动故障转移和选举处理。

有关副本集选举的完整文档,请参阅副本集选举

要了解有关MongoDB故障转移过程的更多信息,请参阅:

读操作

默认情况下,客户端从主[1]读取; 但是,客户端可以指定读取首选项以将读取操作发送到从节点。 对从节点的异步复制意味着从从节点读取的数据不能反映主节点上数据的状态。 有关从副本集读取的信息,请参阅读取首选项

包含读取操作的多文档事务必须将读取首选项设置为主节点(use read preference primary)。

给定事务中的所有操作都必须路由到同一成员。

根据write concern,客户端可以在写入持久之前查看写入结果:

  • 无论是否write concern,使用“本地”或“可用”readConcern的其他客户端都可以在向发布客户端确认写入操作之前查看写入操作的结果。

对于多文档事务中的操作,在事务提交之前,事务的数据更改在事务外部不可见。 但是,其他客户端可以在向发布客户端确认提交操作之前查看事务提交时的结果。

  • 使用“本地”或“可用”readConcern的客户端可以读取在副本集故障转移期间可能随后回滚的数据。

有关MongoDB的读取隔离、一致性和recency的更多信息,请参阅Read Isolation, Consistency, and Recency

事务

从MongoDB 4.0开始,多文档事务可用于副本集。

包含读取操作的多文档事务必须使用read preference primary。

给定事务中的所有操作都必须路由到同一成员。

变更流

从MongoDB 3.6开始,变更流可用于副本集和分片集群。 变更流允许应用程序访问实时数据变更,而不会产生拖尾oplog的复杂性和风险。 应用程序可以使用变更流来订阅一个或多个集合上的所有数据更改。

其它功能

副本集提供了许多选项来支持应用程序需求。 例如,您可以部署包含在多个数据中心的成员的副本集,或通过调整一些成员的members[n].priority来控制选举结果。 副本集还支持报告、灾难恢复或备份功能的专用成员。

有关详细信息,请参阅优先级0副本集成员隐藏副本集成员延迟副本集成员

1(1,2)在某些情况下,副本集中的两个节点可能会暂时认为它们是主要节点,但最多其中一个节点将能够使用 { w: "majority" }write concern完成写入。 可以完成{ w: "majority" } 写入的节点是当前主节点,而另一个节点是以前的主节点,通常由于网络分区尚未意识到其已降级。 发生这种情况时,尽管已经被要求设置读首选项为主节点,连接到前一个主节点的客户端仍可能会观察到过时数据,对前一个主节点的新写入最终将回滚。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MongoDB 集群和安全
MongoDB中的副本集(Replica Set)是一组维护相同数据集的mongod服务。 副本集可提供冗余和高 可用性,是所有生产部署的基础。
用户9615083
2022/12/25
1.2K0
MongoDB 集群和安全
MongoDB之副本集
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
小忽悠
2018/08/27
6580
MongoDB之复制集篇 原
当Primary节点完成数据操作后,Secondary会做出一系列的动作保证数据的同步:
拓荒者
2019/09/16
8980
MongoDB生产注意事项
MongoDB以下内容列出了运行事务的一些生产注意事项。无论是在副本集还是分片集群上运行事务,这些都适用。要在分片集群上运行事务,另请参阅生产注意事项(分片集群)来了解专门针对分片集群的额外注意事项。
MongoDB中文社区
2021/11/16
2.8K1
Mongodb主从复制/ 副本集/分片集群介绍
前面的文章介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 Master-Slave 模式(主从复制),一种是 Replica Sets 模式(副本集)。 Mongodb一共有三种集群搭建的方式: Replica Set(副本集)、 Sharding(切片) Master-Slaver(主从)【目前已不推荐使用了!!!】 其中,Sharding集群也是三种集群中最复杂的。 副本集比起主从可以实现故障转移!!非常使用! mongoDB目前已不推荐使用主从模式,取而代之的
洗尽了浮华
2018/01/22
17.7K2
Mongodb主从复制/ 副本集/分片集群介绍
MongoDB教程(六):mongoDB复制副本集
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
用户11147438
2024/07/20
1700
MongoDB 副本集搭建与管理详解
单节点的 MongoDB 在数据的安全和冗余方面是比较低的,在生产环境中,我们为 MongoDB 配置副本集,这样可以提高数据的高可用性和安全性。
星哥玩云
2022/08/18
1.7K0
MongoDB 副本集搭建与管理详解
006.MongoDB副本集
复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。
木二
2019/07/01
8880
mongodb4.0高可用之副本集
副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成。通过Replication,将数据的更新由Primary推送到其他实例上,在一定的延迟之后,每个MongoDB实例维护相同的数据集副本。通过维护冗余的数据库副本,能够实现数据的异地备份,读写分离和自动故障转移
lyb-geek
2019/09/10
1.4K0
mongodb4.0高可用之副本集
浅尝辄止MongoDB:复制
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/83113823
用户1148526
2019/05/25
6250
(2)MongoDB副本集自动故障转移 全流程原理
前文我们搭建MongoDB三成员副本集,了解集群基本特性,今天我们围绕下图聊一聊背后的细节。
有态度的马甲
2020/01/16
1.8K0
(2)MongoDB副本集自动故障转移 全流程原理
MongoDB集群架构之副本集架构
本文介绍了热门的NoSQL数据库MongoDB的副本集这种分布式架构的一些概念和操作。主要内容包括:
星哥玩云
2022/08/17
9360
MongoDB集群架构之副本集架构
MongoDB集群运维笔记
前面的文章介绍了MongoDB副本集和分片集群的做法,下面对MongoDB集群的日常维护操作进行小总结:         MongDB副本集故障转移功能得益于它的选举机制。选举机制采用了Bully算法,可以很方便从分布式节点中选出主节点。Bully算法是一种协调者(主节点)竞选算法,主要思想是集群的每个成员都可以声明它是主节点并通知其他节点。别的节点可以选择接受这个声称或是拒绝并进入主节点竞争。被其他所有节点接受的节点才能成为主节点。节点按照一些属性来判断谁应该胜出。这个属性可以是一个静态ID,也可以是更新
洗尽了浮华
2018/01/23
4.8K0
MongoDB集群运维笔记
MongoDB部署检查列表建议
MongoDB Manual (Version 4.2)> Administration
MongoDB中文社区
2020/09/21
1.3K0
MongoDB部署检查列表建议
MongoDB权威指南学习笔记(3)--复制和分片
使用mongo –nodb选项启动mongo shell,启动shell但是不连接到任何mongod
earthchen
2020/09/24
1.4K0
《一起学mongodb》之 第二卷 部署方式(一)
上一篇跟大家简单的介绍了一下 mongoDB 的特点,做了一个简单的入门,不知道大家是否还记得,不记得的小伙伴可以回顾一下《一起学》mongodb 之第一卷
moon聊技术
2022/02/17
6730
《一起学mongodb》之 第二卷 部署方式(一)
MongoDB 基础浅谈
作者:hazenweng,腾讯 QQ 音乐后台开发工程师 MongoDB 作为一款优秀的基于分布式文件存储的 NoSQL 数据库,在业界有着广泛的应用。下文对 MongoDB 的一些基础概念进行简单介绍。 1 MongoDB 特点 面向集合存储:MongoDB 是面向集合的,数据以 collection 分组存储。每个 collection 在数据库中都有唯一的名称。 模式自由:集合的概念类似 MySQL 里的表,但它不需要定义任何模式。 结构松散:对于存储在数据库中的文档,不需要设置相同的字段,并且
腾讯技术工程官方号
2021/09/18
1.5K0
高可用mongodb集群(分片+副本):规划及部署
mongodb是最常用的nosql数据库,以下记录如何搭建高可用mongodb集群(分片+副本)
雪人
2022/10/13
3.7K0
3分钟看完MongoDB3.6新特性
3.6版本起,默认使用localhost(127.0.0.1),多个ip使用逗号分隔:localhost,198.51.100.1 除去部分2.6 RPM安装包是本地外,其余版本默认是All interfaces.
py3study
2020/01/06
1.2K0
3分钟看完MongoDB3.6新特性
MongoDB复制集
原文链接:http://blog.51cto.com/dreamlinux/1945705
拓荒者
2019/09/19
7090
MongoDB复制集
相关推荐
MongoDB 集群和安全
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档