MongoDB oplog 详解
oplog 简介
oplog 是local库下的一个固定集合,Secondary就是通过查看Primary的oplog这个集合来进行复制的。每个节点都有oplog,记录从主节点复制过来的信息,这样每个成员都可以作为同步源给其它节点。
oplog 可以说是MongoDB Replication的纽带。
复本集数据同步的过程
Primary节点写入数据,Secondary 通过读取primary的oplog得到复制信息,开始复制数据并且将复制的信息写入到自己的oplog。如果某个操作失败(只有当同步源损坏或者数据与主节点不一致才可能发生),则备份节点停止从当前数据源复制数据。如果某个备份节点由于某些原因挂掉了,当重新启动后,就会自动从oplog的最后一个操作开始同步,同步完成后,就信息写入自己的oplog,由于复制操作是先复制数据,复制完成后再写入oplog,有可能相同的操作会同步两份,不过MongoDB在设计之初就考虑了这个问题,将oplog的同一个操作执行多次,与执行一次的效果是一样的。
作用: 当Primary进行写操作的时候,会将这些操作记录写入Primary的Oplog中,而后Secondary会将Oplog复制到本机并应用这些操作,从而实现Replication的功能。
可以用作数据恢复,类似于MySQL的binlog
# 查看oplog的状态,输出的信息包括oplog日志大小,操作日志记录的起始时间
rs.printReplicationInfo()
# 查看oplog的状态、大小、存储的时间范围
db.getReplicationInfo()
# oplog数据结构
# 获取一条oplog
db.oplog.rs.find().skip(1).limit(1).toArray() ts: 8字节的时间戳,由4字节unix timestamp + 4字节自增计数表示。这个值很重要,
在选举(如master宕机时)新primary时,会选择ts最大的那个secondary作为新primary
h: 此操作的独一无二的ID
op: 1字节的操作类型
"i": insert
"u": update
"d": delete
"c": db cmd
"db": 声明当前数据库 (其中ns 被设置成为=>数据库名称+ '.')
"n": no op,即空操作,其会定期执行以确保时效性
ns: 操作所在的namespace
o: 操作所对应的document,即当前操作的内容(比如更新操作时要更新的的字段和值)
o2: 在执行更新操作时的where条件,仅限于update时才有该属性
b: bool,删除时候出现
v: oplog 的版本
MongoDB oplog 详解的更多相关文章
- MongoDB副本集配置系列七:MongoDB oplog详解
1:oplog简介 oplog是local库下的一个固定集合,Secondary就是通过查看Primary 的oplog这个集合来进行复制的.每个节点都有oplog,记录这从主节点复制过来的信息,这样 ...
- mongodb oplog详解和格式分析
1. 基本概念 oplog使用固定大小集合记录了数据库中所有修改操作的操作日志(新增.修改和删除,无查询),mongodb收到修改请求后,先在主节点(Primary)执行请求,再把操作日志保存到opl ...
- MongoDB数据库详解
第1章 数据库管理系统 1.1 前言 01.数据的定义:文字.图像.地理位置信息(坐标.经纬度)等 02.数据库管理系统的定义:建立.存取和管理数据,保证数据安全和完整性的软件 03.常见的数据库管理 ...
- MongoDb进阶实践之三 Mongodb基本命令详解
一.引言 从今天开始,我要正式开始介绍MongoDB的使用方法了.在此之前,我用了两篇文章分别介绍了如何在Linux系统和Windows系统上安装和配置MongoDB系统.如 ...
- mongodb配置文件详解
logpath=/app/mongo/mongolog/mongo.log dbpath=/app/mongo/mongodata verbose = true #vvvv = true #此项会产生 ...
- mongodb配置详解
#启用日志文件,默认启用 journal=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false quiet=false # 日志文件位置 logpath=/usr/loc ...
- MongoDB应用详解
mongodb是一个用来存储管理数据的软件 他是一个 c/s 架构的软件,是一个网络类型的软件如果要是使用mongodb的话,首先需要开启mongodb的服务端,然后通过客户端软件去连接服务器 1.要 ...
- windows下mongodb安装详解
1.打开官网https://www.mongodb.com/download-center?jmp=nav#community 注:这里小伙伴们可是开启下FQ软件psiphon 3下载(不开启FQ好像 ...
- MongoDB分片详解
分片是MongoDB的扩展方式,通过分片能够增加更多的机器来用对不断增加的负载和数据,还不影响应用. 1.分片简介 分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不 ...
随机推荐
- cogs 3008. 朋友圈
3008. 朋友圈 ★★ 输入文件:friendscircle.in 输出文件:friendscircle.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] NO ...
- 点分治 (等级排) codeforces 321C
Now Fox Ciel becomes a commander of Tree Land. Tree Land, like its name said, has n cities connected ...
- ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
基础教程之导出Pdf收据 说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性 PdfExpor ...
- CTF实验吧——证明自己吧
题目地址:http://www.shiyanbar.com/ctf/28 没有壳 ,vc++ 写的 拖进OD观察观察,发现代码很短哟,先来看这俩个call 怀疑他们其中有正确的flag和我们输入的东西 ...
- Spring Cloud Alibaba 之 Sentinel 限流规则和控制台实例
这一节我们通过一个简单的实例,学习Sentinel的基本应用. 一.Sentinel 限流核心概念 在学习Sentinel的具体应用之前,我们先来了解一下Sentinel中两个核心的概念,资源和规则. ...
- mui html5 plus
mui: mod:框架 mhe:头文件 mbody:内容 mta:底部 msl:轮播图 mg:九宫格 ml:图文列表 mu.post : ajax dga: 绑定事件 mui.toast :来实 ...
- Linux中软件安装包的格式
一.Linux常用安装包及安装方法 1.安装包一般有四类: 1)tar包,如software-1.2.3-1.tar.gz.他是使用UNIX系统的打包工具tar打包的. 2)rpm包,如softwar ...
- 字符串(String)的创建,以及字符串的属性及方法
1.String对象的创建 方法1: var txt = new String("i am String"); console.log(txt); // 结果为:i am Stri ...
- 白话 spring AOP
------------------------------------ 剩下的时间不多了,抓经做自己想做的吧 AOP: 专业术语叫做面向切面的编程 为什么要使用aop: 为了简化代码, 将相同代码抽 ...
- Springboot | @RequestBody 接收到的参数对象属性为空
背景 今天在调试项目的时候遇到一个坑,用Postman发送一个post请求,在Springboot项目使用@RequestBody接收时参数总是报不存在,但是多次检查postman上的请求格式以及项目 ...