1. 同步

复制是指多台服务器保持相同的数据副本。MongoDB通过保存操作日志(oplog)实现复制功能。

oplog存在于主节点local数据库中的一个固定集合,包含了主节点执行的每一次写操作。

每个节点维护自己的oplog,用来记录它从主节点复制的每个操作,从节点停止运行重启后,会从oplog中的最后一个操作开始同步,openlog中的每个操作都是幂等的,所以目标数据集执行一次与多次都会产生同样的效果。

由于openlog大小固定,因此只能容纳一定数量的操作。在大多数情况下,默认的oplog大小就足够了。但以下的工作负载可能会需更大的oplog。

  • 一次更新多个文档

    为了保持幂等性,oplog必须将多文档更新转换为多个单独的操作
  • 删除的数据量与插入的数据量相同

    此情况下,磁盘使用量不会增加,但是操作日志可能会非常大,因为删除与插入都要一条条记录操作日志
  • 大量的就地(in-place更新)

    如果很大一部分工作负载是不增加文档大小的更新,那么也会有大量操作日志

mongodb中存在两种形式数据同步:初始化同步 与 复制

1.1 初始化同步

初始化同步用于向新成员添加完整的数据集。

当一个副本集启动时,它会检查自身的有效状态,如果有效,则会从副本集的另一个成员中复制完整副本。

首先,MongoDB会将现有数据全部删除,然后克隆除local数据库之外的所有数据库。一但所有的数据库都被克隆,mongod会检查同步源的oplog,将在复制过程中发生的所有变更应用到数据集上。

有个特别注意的问题是初始化同步时间过长。这种情况下, 新成员可能从同步源oplog末尾脱离(毕竟它是固定集合),导致永远无法跟上同步源。除了在不太忙的时候初始化,别无他法。

1.2 复制

从节点会在初始化同步后持续复制数据。它们从同步源复制oplog,并在一个异步进程中应用这些操作。

2. 成员状态
  • STARTUP

    成员第一次启动时的状态,这是MongoDB尝试加载副本集配置

  • STARTUP2

    配置被加载,处于初始化同步状态,通常只需几秒。

  • RECOVERING

    此状态表明成员运行正常,但不能处理读请求

  • ARBITER

    仲裁者独有的状态

  • DOWN UNKNOW REMOVED

    表示系统处于异常状态

欢迎关注公众号算法小生沈健的技术博客

10.MongoDB系列之副本集组成的更多相关文章

  1. mongodb系列之---副本集配置与说明

    在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...

  2. 12.MongoDB系列之副本集管理

    1. 控制成员状态 1.1 把主节点变为从节点 rs.stepDown() 1.2 阻止选举 如果需要对主节点维护,不想期间其他从节点选举为主节点,则可以 rs.freeze(10000) 维护完成后 ...

  3. 【六】MongoDB管理之副本集

    一.复制介绍 所谓的复制就是在多个主机之间同步数据的过程. 1.数据冗余及可用性 复制技术提供数据冗余及可用性,在不同的数据库服务器上使用多个数据副本,复制技术防止单个数据库服务器出现数据故障而出现数 ...

  4. MongoDB 复制(副本集)学习

    MongoDB 复制(副本集)学习 replication set复制集,复制集,多台服务器维护相同的数据副本,提高服务器的可用性.MongoDB复制是将数据同步在多个服务器的过程.复制提供了数据的冗 ...

  5. Mongodb 笔记06 副本集的组成、从应用程序连接副本集、管理

    副本集的组成 1. 同步:MongoDB的复制功能是使用操作日志oplog实现的,操作日志包含了主节点的每一次写操作.oplog是主节点的local数据库中的一个固定集合.备份节点通过查询整个集合就可 ...

  6. mongodb replica set(副本集)设置步骤

    网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下: 首先先去下载一个mongodb最新版,目前最新版应该是2.6 cd /usr/local/bin wget http://fastd ...

  7. mongodb生产环境(副本集模式)集群搭建配置

    mongodb副本集模式由如下几部分组成: 1.路由实例mongos 2.配置实例configsvr 3.副本集集群replset(一主多从) tips: 1.以上实例都是mongod守护进程 2.以 ...

  8. MongoDB主从复制和副本集

    MongoDB有主从复制和副本集两种主从复制模式,主从复制最大的问题就是无法自动故障转移,MongoDB副本集解决了主从模式无法自动故障转义的特点,因此是复制的首选.对于简单的主从复制无法自动故障转移 ...

  9. Mongodb主从复制 及 副本集+分片集群梳理

    转载努力哥原文,原文连接https://www.cnblogs.com/nulige/p/7613721.html 介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 ...

随机推荐

  1. js Fetch返回数据res.json()报错问题

    前言 一直以来在简单的场景中经常使用fetch代替第三方请求库, fetch是JavaScript的原生函数, 简单.高效.快速.稳定.可定制等等诸多优点.一直也是用着很是舒服,直到有一天它竟然报错了 ...

  2. GitHub 主页美化设置教程

    GitHub profile设置教程 早些时候逛GitHub,就发现别人的主页特别的精美,当时没有空研究,前几天得空给安排了一下 先看一下成品 贴一个github上一个男人的主页 下面这个是我的 果然 ...

  3. WTL_Freecell绿色版

    WTL_Freecell绿色版-用户手册 1.程序特点和使用环境介绍 (1).版本信息 WTL_Freecell-Release05-v1.3-20190129 (WTL空当接龙绿色版v1.3),By ...

  4. Docker 01 概述

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  5. HttpClient 在vivo内销浏览器的高并发实践优化

    作者:vivo 互联网服务器团队- Zhi Guangquan HttpClient作为Java程序员最常用的Http工具,其对Http连接的管理能简化开发,并且提升连接重用效率:在正常情况下,Htt ...

  6. ES6 Promise详解

    前言 本文主要是对Promise本身的用法做一个全面解析而非它的原理实现,如果你对Promise的用法还不是很熟悉或者想加深你对Promise的理解,我相信这篇文章一定会帮到你. 首先让我们先了解一下 ...

  7. Flutter 实战(一):列表项内容可自定义的列表组件

    前言 本篇文的目的是熟练掌握 Flutter 组件的封装,并且使用回调函数实现主要功能. 本组件的设计灵感来源于 Element 组件库的 table 组件. 正题 定义回调函数 在此之前,必须要了解 ...

  8. 「雅礼集训 2017 Day2」水箱 (数据结构+dp ,一个log)

    题面 题解 在网上看到有些做法,有什么平衡树.启发式合并等等总之复杂度O(Tnlog^2(n))的不优做法,这里我就用一个O(Tnlogn)的做法好了 其实大体上推导的思路都是一样的. 我们很容易发现 ...

  9. 流媒体协议扫盲(rtp/rtcp/rtsp/rtmp/mms/hls)

    RTP           参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细 ...

  10. Exchange如何将邮件转发给外部邮件地址

    Exchange如何将邮件转发给外部邮件地址 最近遇到一个需求.一位已经离职的员工需要将后续的邮件转发给他自己的私人邮箱.安全,行政的审核通过后,这个问题就到了技术部门了. Exchange可以很方便 ...