前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MongoDB日志记录

MongoDB日志记录

作者头像
MongoDB中文社区
发布于 2020-11-11 02:34:33
发布于 2020-11-11 02:34:33
2.8K0
举报
文章被收录于专栏:MongoDB中文社区MongoDB中文社区

Storage > Journaling

在本页面将从以下两点论述:

为了在发生故障时提供持久性,MongoDB使用预写日志记录到磁盘journal文件中。

日志记录和WiredTiger存储引擎

重要

本节中提到的log是指WiredTiger预写日志(即日志),而不是MongoDB日志文件

WiredTiger使用检查点以提供磁盘上数据的一致视图,并允许MongoDB从最后一个检查点恢复。但是,如果MongoDB在检查点之间意外退出,则需要日记来恢复上一个检查点之后发生的信息。

注意

从MongoDB 4.0开始,对于使用WiredTiger存储引擎的副本集成员,不能指定--nojournal选项或storage.journal.enabled:false

使用日志记录的恢复过程:

1.在数据文件中查找最后一个检查点的标识符。2.在日记文件中搜索与最后一个检查点的标识符匹配的记录。3.从上一个检查点开始,将操作应用于日志文件。

日志记录过程

于3.2版本中变更

使用日志功能,WiredTiger为每个客户端发起的写操作创建一个日记记录。日志记录包括由初始写入引起的任何内部写入操作。例如,对集合中文档的更新可能会导致对索引的修改;WiredTiger创建单个日志记录,其中包含更新操作及其关联的索引修改。

MongoDB将WiredTiger配置为使用内存缓冲来存储日记记录。线程进行协调以分配并复制到其缓冲区中。全部日记记录最多可缓存128kB。

WiredTiger在以下任一情况下将缓冲的日记记录同步到磁盘:

  • 对于副本集成员(主节点和从节点成员),
    • 针对oplog转发扫描查询
    • 读取操作作为因果一致会话的一部分执行
    • 如果有操作在等待操作日志条目。可以等待操作日志条目的操作包括:
    • 另外,对于从节点成员,在每次批量处理oplog条目之后。
  • 如果写操作包含或隐含了j:true的写关注。

注意

如果writeConcernMajorityJournalDefault设置为true,则写关注“majority”会隐含j: true。

  • 每100毫秒一次(请参阅storage.journal.commitIntervalMs)。
  • WiredTiger创建新的日记文件时。由于MongoDB使用的日志文件大小限制为100 MB,因此WiredTiger大约每100 MB数据创建一个新的日志文件。

重要

在两次写操作之间,虽然日记记录保留在WiredTiger缓冲区中,但是强制关闭mongod可能会导致更新丢失。

同样请参阅serverStatus命令在“wiredTiger.log”字段中返回有关WiredTiger日记统计信息的信息。

日志文件

对于日志文件,MongoDB在dbPath目录下会创建一个名为“journal”的子目录。WiredTiger日志文件的名称具有以下格式WiredTigerLog.<sequence>,其中<sequence>是从0000000001开始的零填充数字。

日志记录

日志文件包含每个客户端的初始写操作记录:

  • 日记记录包括由初始写入引起的任何内部写入操作。例如,对集合中文档的更新可能会导致对索引的修改;WiredTiger创建单个日志记录,其中包含更新操作及其关联的索引修改。
  • 每个记录都有一个唯一的标识符。
  • WiredTiger的最小日志记录大小为128字节。

压缩

默认情况下,MongoDB将WiredTiger配置为对其日记数据使用snappy压缩。要指定其他压缩算法或不进行压缩,请使用storage.wiredTiger.engineConfig.journalCompressor设置。详细信息请参阅Change WiredTiger Journal Compressor

注意

如果日志记录小于或等于128字节(WiredTiger的最小值日志记录大小),则WiredTiger不会压缩该记录。

日志文件大小限制

MongoDB的WiredTiger日志文件的大小限制为最大大约为100 MB。

  • 文件超过该限制后,WiredTiger将创建一个新的日记文件。
  • WiredTiger会自动删除旧的日志文件,仅保留从上一个检查点恢复所需的文件。

预分配

WiredTiger预分配日志文件。

日志和内存存储引擎

从MongoDB Enterprise的3.2.6版本开始,内存存储引擎就成为MongoDB常规可用性(GA)的一部分。因为其数据保留在内存中,所以没有单独的日志。使用写关注j:true的写操作会被立即确认。

如果副本集中任何有投票权的成员使用内存存储引擎,则必须将writeConcernMajorityJournalDefault设置为false。

注意

从版本4.2(以及4.0.13和3.6.14)开始,如果副本集成员使用内存存储引擎(投票或非投票),但副本集的writeConcernMajorityJournalDefault设置为true,则副本集成员会记录一条启动警告。

writeConcernMajorityJournalDefault设置为false,MongoDB在确认写入之前不会等待w:“majority”的写操作被写入磁盘日志。因此,majority写操作可能会在给定副本集中的大多数节点瞬时丢失(比如崩溃和重启)时回滚。

同样请参阅内存存储引擎:持久性

原文链接:

https://docs.mongodb.com/v4.2/core/journaling/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Mongoing中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
5个要点,带你了解MongoDB的WiredTiger存储引擎
MongoDB Manual (Version 4.2)> Storage > Storage Engines > WiredTiger Storage Engine
MongoDB中文社区
2020/04/24
2.1K0
5个要点,带你了解MongoDB的WiredTiger存储引擎
常见问题: MongoDB 存储
存储引擎是数据库的一部分,负责管理如何在内存和磁盘上存储数据。许多数据库支持多个存储引擎,其中不同的引擎对特定工作负载的性能会更好。例如,一个存储引擎可能为读取繁重的工作负载提供更好的性能,另一个可能支持更高的写入操作吞吐量。
MongoDB中文社区
2019/06/11
2.6K0
常见问题: MongoDB 存储
serverStatus详解
serverStatus命令返回一个文档,该文档提供数据库状态的概述。监控应用程序可以定期运行此命令收集有关该实例的统计信息。
MongoDB中文社区
2019/04/22
2.9K0
serverStatus详解
MongoDB部署检查列表建议
MongoDB Manual (Version 4.2)> Administration
MongoDB中文社区
2020/09/21
1.2K0
MongoDB部署检查列表建议
云测评-MongoDB存储引擎谁更强
导读:本文作者是来自Percona的支持工程师 Vinodh Krishnaswamy 和 Aayushi Mangal。这篇文章主要介绍了MongoDB中两个引擎之间的差异,并在文章结尾处给出了表格对比总结。全文约2050字,阅读需要5分钟。
磊哥测评
2019/03/29
2.3K0
云测评-MongoDB存储引擎谁更强
云测评 | MongoDB两代引擎谁更强?
本文作者是来自Percona的支持工程师 Vinodh Krishnaswamy 和 Aayushi Mangal。主要介绍了MongoDB中两个引擎之间的差异,并在文章结尾处给出了表格对比总结。文章由腾讯云数据库团队翻译整理,全文约2050字,阅读需要5分钟。 ---- 在这篇文章中,我们将了解到MongoDB中MMAP和WiredTiger引擎之间的差异。很多客户都咨询过这两个引擎的问题,这篇文章将为你们解决难题。我们将告诉您这些引擎的主要特性,您可以根据自己的需求选择合适的引擎。 在MongoDB中
腾讯云数据库 TencentDB
2019/05/16
1.7K0
云测评 | MongoDB两代引擎谁更强?
【赵渝强老师】MongoDB的Journal日志
数据是MongoDB的核心,MongoDB通过使用Journal日志保证数据的安全。Journal日志用于记录上一个检查点之后发生的数据更新,并将更新的信息顺序写入Journal日志文件中。通过使用Journal日志能够将数据库从系统异常终止事件中还原到一个有效的状态。通过6.5.1.3小节的介绍了解到,MongoDB使用预写日志机制实现数据的持久化。每个Journal日志文件的大小是100M,并存储在由参数--dbpath指定的下的journal子目录中,如下所示:
赵渝强老师
2024/12/28
1220
【赵渝强老师】MongoDB的Journal日志
一文读懂MongoDB事务处理
在MongoDB中,对单个文档的操作是原子的。由于可以在单个文档结构中使用内嵌文档和数组来获得数据之间的关系,而不必跨多个文档和集合进行范式化,所以这种单文档原子性避免了许多实际场景中对多文档事务的需求。
MongoDB中文社区
2021/12/04
2.6K0
【赵渝强老师】MongoDB的WiredTiger存储引擎
WiredTiger提供文档级别(Document-Level)的并发控制,检查点(CheckPoint),数据压缩和本地数据加密( Native Encryption)等功能。从MongoDB 3.2 版本开始,WiredTiger成为MongDB默认的Storage Engine。
赵渝强老师
2024/09/02
1970
【赵渝强老师】MongoDB的WiredTiger存储引擎
MongoDB运维与开发(9)---readConcern
MongoDB的写请求写入Primary, secondary从Primary自动获取并且应用oplog来保持和主库的同步, MongoDB 允许用户从Primary 或者 secondary 读取数据。但读数据可能存在以下问题:
AsiaYe
2020/12/14
1.6K0
MongoDB运维与开发(9)---readConcern
MongoDB系列7:MongoDB存储引擎
1、前言 存储引擎是数据库的组成部分,负责管理数据存储。 MongoDB支持的以下存储引擎: 存储引擎描述WiredTiger存储引擎从MongoDB 3.2开始默认的存储引擎,新的版本MongoDB推荐使用WiredTiger存储引擎。MMAPv1存储引擎MMAPv1是MongoDB 3.2之前版本默认的存储引擎。In-Memory存储引擎MongoDB企业版支持In-Memory存储引擎。 表 2、WiredTiger存储引擎 从MongoDB 3.2开始,MongoDB默认的存储引擎为WiredTig
大数据和云计算技术
2018/03/30
2.4K0
MongoDB系列7:MongoDB存储引擎
一文了解MongoDB监控
MongoDB Manual (Version 4.2)> Administration > Monitoring for MongoDB
MongoDB中文社区
2021/03/01
1.1K0
MongoDB生产注意事项
MongoDB以下内容列出了运行事务的一些生产注意事项。无论是在副本集还是分片集群上运行事务,这些都适用。要在分片集群上运行事务,另请参阅生产注意事项(分片集群)来了解专门针对分片集群的额外注意事项。
MongoDB中文社区
2021/11/16
2.7K1
3分钟看完MongoDB3.6新特性
3.6版本起,默认使用localhost(127.0.0.1),多个ip使用逗号分隔:localhost,198.51.100.1 除去部分2.6 RPM安装包是本地外,其余版本默认是All interfaces.
py3study
2020/01/06
1.2K0
3分钟看完MongoDB3.6新特性
常见问题:MongoDB诊断
·为什么MongoDB会记录这么多“Connection Accepted”事件?
MongoDB中文社区
2019/06/24
1.1K0
MongoDB 初体验:存储引擎 MMAPv1 与高内存消耗及升级迁移
当我对公司的一个内部系统性能无可忍受时,意外发现在这个内存仅为 32G 的服务器上,运行着一个 MongoDB 数据库,其主进程 mongod 占用了 30.705 G的虚拟内存空间。这立刻引起了我的兴趣,必须要研究一下其工作原理。
数据和云
2018/07/27
1.7K0
MongoDB 初体验:存储引擎 MMAPv1 与高内存消耗及升级迁移
MongoDB基础知识及原理概述
MongoDB将等到它达到你请求的级别或者超时时间.如果它超时,它可能仍然完成了其中的一部分.如果发生超时,你可能需要确认状态
鳄鱼儿
2024/05/21
2040
MongoDB基础知识及原理概述
【赵渝强老师】MongoDB写入数据的过程
在MongoDB数据更新时,WiredTiger存储引擎使用预写日志的机制先将数据更新写入到Journal日志文件中。然后在创建检查点操作开始时,再将日志文件中记录的操作刷新到数据文件。换句话说,通过预写日志和检查点机制可以保证将数据更新持久化到数据文件中,并实现数据的一致性。
赵渝强老师
2025/01/04
760
【赵渝强老师】MongoDB写入数据的过程
MongoDB存储引擎发展及WiredTiger深入解析(二)
在早期,MongoDB主要使用的是MMAPv1存储引擎。基于内存映射文件的数据管理方式,MMAPv1在某些特定场景下表现出色。然而,随着数据量的增长和复杂应用场景的增多,MMAPv1在大量写入操作下的性能瓶颈逐渐显现。
公众号:码到三十五
2024/03/19
5330
MongoDB存储引擎发展及WiredTiger深入解析(二)
MongoDB与MySQL关于写确认的异同
之前几周有幸被京东智联云的市场同事推荐参与麦思博的一个视频课程的录制,题目是与MongoDB相关的内容。在ppt里也写到了推荐学员可以对比参照其他数据的原理和特点,来学习和理解MongoDB的一些原理和特点,而自己最近在学习的时候,正好发现了一处MongoDB与MySQL设计非常相似的地方,即今天要介绍的写确认相关的内容。
云计算与数据库
2020/05/06
1.4K0
MongoDB与MySQL关于写确认的异同
相关推荐
5个要点,带你了解MongoDB的WiredTiger存储引擎
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档