首页 > 数据库 >10.MongoDB系列之副本集组成

10.MongoDB系列之副本集组成

时间:2022-10-16 18:47:02浏览次数:80  
标签:10 同步 初始化 MongoDB 副本 复制 oplog 操作

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,副本,复制,oplog,操作
From: https://www.cnblogs.com/shenjian-online/p/16796729.html

相关文章

  • #yyds干货盘点# 面试必刷TOP101:验证IP地址
    1.简述:描述编写一个函数来验证输入的字符串是否是有效的IPv4或IPv6地址IPv4地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为0-255,用(".")分割。比如,172.......
  • #yyds干货盘点# 面试必刷TOP101:大数加法
    1.简述:描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。数据范围:,字符串仅由'0'~‘9’构成要求:时间复杂度 示例1输入:"1","99"返回值:"100"说明:1+9......
  • Docker安装MongoDB并使用Navicat连接
    MongoDB简介:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。是一个介于关系数据库和非关系数据库之间......
  • 20221016笔记
    1.数据类型char//字符数据类型short//短整型int//整形long//长整型longlong//更长的整形float//单精度浮点数double//双精度浮点数#include<stdio.h>intmain(){pr......
  • #yyds干货盘点# LeetCode 热题 HOT 100:二叉树的中序遍历
    题目:给定一个二叉树的根节点root,返回它的中序 遍历。 示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]代码实现:cla......
  • #yyds干货盘点# LeetCode 热题 HOT 100:不同的二叉搜索树
    题目:给你一个整数n,求恰由n个节点组成且节点值从1到n互不相同的二叉搜索树有多少种?返回满足题意的二叉搜索树的种数。 示例1:输入:n=3输出:5示例2:输入:n=1输出:1......
  • 10.16
    本周内容总结1.文件操作2.函数3.函数参数4.装饰器5.算法6.生成式7.内置函数8.可迭代对象9.迭代器对象1.文件操作1.文件的概念就是操作系统暴露给用户操作硬盘......
  • MongoDb基本命令
    基本命令查看当前有哪些数据库#方法1showdatabases#方法2showdbs创建数据库/选择数据库usetest2#如果当前没有test2数据库就会创建test2并切换,有的话直接......
  • 【10】Spring源码-分析篇-AOP源码分析
    Spring源码-AOP分析一、手写AOP回顾  本文我们开始讲解Spring中的AOP原理和源码,我们前面手写了AOP的实现,了解和自己实现AOP应该要具备的内容,我们先回顾下,这对我们理解Spri......
  • Windows10系统命令行设置环境变量
    1.使用set临时设置环境变量用于设置临时环境变量。只在当前命令行窗口中有效。1.1cmd终端#如设置CLASSPATH$setCLASSPATH=D:\program\JavaTrainning\src#查看......