| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Journal日志与oplog日志的区别 -> 正文阅读 |
|
[大数据]Journal日志与oplog日志的区别 |
目录 ????????在学习mongoDB基础知识的时候,可能有些概念会混淆,比如 Journal日志与oplog日志有啥区别。 ? ? ? ? 下面的内容主要摘选自《MongoDB原理与实战》张友东著 一、概念的不同1、Journal日志????????Journal日志是MongoDB 存储引擎层的机制, ?前 MongoDB 所有的存储引擎都?持配置Journal,自2.0开始默认开启。在MongoDB中所有的数据写?、读取最终都是调存储引擎层的接口实现的, 而 Journal 日志是用来记录写操作的,以实现数据故障恢复和持久化数据的目的。 ????????以wiredtiger 为例,如果不配置 Journal,写? wiredtiger 的数据,并不会?即持久化存储; ?是每分钟会做?次全量的checkpoint(storage.syncPeriodSecs 配置项, 默认为1分钟) ,将所有的数据持久化。如果中间出现宕机, 那么数据只能恢复到最近的?次checkpoint,这样最多可能丢掉最近1分钟的数据。而当开启Journal日志后,写入数据库的每个操作都会被记录,当出现宕机时,在恢复至最近的checkpoint点后,可以继续重放后续的操作日志,恢复数据。 2、Oplog日志? ? ? ? Oplog日志默认在mongoDB的副本集模式下开启。Oplog日志主要用于Primary节点和Secondary节点的数据同步,Oplog记录了Primary节点的所有的写操作,Secondary节点通过定期拷贝Primary节点的Oplog实现增量备份。 ? ? ? ? 自mongoDB3.6新增的changestream机制也是基于oplog实现的。ChangeStreams 在 Oplog 之上包裹一层应用,对外提供一个 API 接口,将数据进行实时推送。 ?图选自《mongodb入门实战》 二、数据范围不同? ? ? ? 以mongoDB 副本集中的一次插入数据为例,在数据层面分为下面三个步骤: ????????????????1. 将?档数据写?对应的集合 ????????????????2. 更新集合的所有索引信息 ????????????????3. 写??条oplog?于同步 ????????上?3个修改操作,需要确保要么都成功,要么都失败。MongoDB 在写?数据时, 会将上述3个操作放到?个 wiredtiger 的事务?, 确保「原?性」 。如下所示:
? ? ? ? ? ?执行顺序如下图所示: ?????????wiredtiger 提交事务时, 会将所有修改操作应?, 并将上述3个操作写?到?条 journal 操作日志里; 后台会周期性的checkpoint, 将修改持久化, 并移除无用的journal。从数据布局看, oplog 与 journal 的关系如下所示: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:22:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |