10.MongoDB系列之副本集组成
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系列之副本集组成的更多相关文章
- mongodb系列之---副本集配置与说明
在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...
- 12.MongoDB系列之副本集管理
1. 控制成员状态 1.1 把主节点变为从节点 rs.stepDown() 1.2 阻止选举 如果需要对主节点维护,不想期间其他从节点选举为主节点,则可以 rs.freeze(10000) 维护完成后 ...
- 【六】MongoDB管理之副本集
一.复制介绍 所谓的复制就是在多个主机之间同步数据的过程. 1.数据冗余及可用性 复制技术提供数据冗余及可用性,在不同的数据库服务器上使用多个数据副本,复制技术防止单个数据库服务器出现数据故障而出现数 ...
- MongoDB 复制(副本集)学习
MongoDB 复制(副本集)学习 replication set复制集,复制集,多台服务器维护相同的数据副本,提高服务器的可用性.MongoDB复制是将数据同步在多个服务器的过程.复制提供了数据的冗 ...
- Mongodb 笔记06 副本集的组成、从应用程序连接副本集、管理
副本集的组成 1. 同步:MongoDB的复制功能是使用操作日志oplog实现的,操作日志包含了主节点的每一次写操作.oplog是主节点的local数据库中的一个固定集合.备份节点通过查询整个集合就可 ...
- mongodb replica set(副本集)设置步骤
网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下: 首先先去下载一个mongodb最新版,目前最新版应该是2.6 cd /usr/local/bin wget http://fastd ...
- mongodb生产环境(副本集模式)集群搭建配置
mongodb副本集模式由如下几部分组成: 1.路由实例mongos 2.配置实例configsvr 3.副本集集群replset(一主多从) tips: 1.以上实例都是mongod守护进程 2.以 ...
- MongoDB主从复制和副本集
MongoDB有主从复制和副本集两种主从复制模式,主从复制最大的问题就是无法自动故障转移,MongoDB副本集解决了主从模式无法自动故障转义的特点,因此是复制的首选.对于简单的主从复制无法自动故障转移 ...
- Mongodb主从复制 及 副本集+分片集群梳理
转载努力哥原文,原文连接https://www.cnblogs.com/nulige/p/7613721.html 介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 ...
随机推荐
- Apache DolphinScheduler新一代分布式工作流任务调度平台实战-中
@ 目录 架构设计 总体架构 启动流程图 架构设计思想简述 负载均衡 缓存 实战使用 参数 参数优先级 内置参数 基础内置参数 衍生内置参数 本地参数和全局参数 工作流传参 数据源管理 支持数据源 创 ...
- Luogu3855 [TJOI2008]Binary Land (BFS)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- 数据结构与算法【Java】03---栈
前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...
- Java开发学习(二十五)----使用PostMan完成不同类型参数传递
一.请求参数 请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数? 关于请求参数的传递与接收是和请求方 ...
- JS的简介
JS式JavaScript的简称,它是一门弱语言,它可以实现让网页动起来 JS的构成 核心(ECMAScript) 文档对象模型(DOM)-- Document Object Module 浏览器对 ...
- 演示RabbitMQ的交换类型
一.Direct exchange 新建一个名为direct_exchange的Direct exchange 添加队列direct_queue1 添加队列direct_queue2 direct_e ...
- shellcode 注入执行技术学习
shellcode 注入执行技术学习 注入执行方式 CreateThread CreateRemoteThread QueueUserAPC CreateThread是一种用于执行Shellcode的 ...
- JAVA反序列化漏洞修复解决方法
MyObject类建立了Serializable模块,而且重新写过了readObject()变量,仅有建立了Serializable模块的类的目标才能够被实例化,沒有建立此模块的类将无法使他们的任意状 ...
- 从 Linux 内核角度探秘 JDK NIO 文件读写本质
1. 前言 笔者在 <从 Linux 内核角度看 IO 模型的演变>一文中曾对 Socket 文件在内核中的相关数据结构为大家做了详尽的阐述. 又在此基础之上介绍了针对 socket 文件 ...
- 【读书笔记】C#高级编程 第八章 委托、lambda表达式和事件
(一)引用方法 委托是寻址方法的.NET版本.委托是类型安全的类,它定义了返回类型和参数的类型.委托不仅包含对方法的引用,也可以包含对多个方法的引用. Lambda表达式与委托直接相关.当参数是委托类 ...