mongodb 系列 ~ journal日志畅谈

一 简介 我们来聊聊Journal日志
二 核心观点 WAL 日志先行策略
三  开启journal流程
     在开启journal的系统中,写操作从请求到写入磁盘共经历5个步骤,在serverStatus()中已经列出各个步骤消耗的时间。
    1 Write to privateView
    2 prepLogBuffer
    3 WritetoJournal
    4 WritetoDataFile
    5 RemaptoPrivateView
四  基本概念知识
   1 shared view
      数据文件映射到一块内存区域,称为shared view,数据会直接写入(在不开启journal的情况下) 系统每60s刷新这块内存到磁盘.如果系统断电,就会丢失这60S的未持久化的数据
   2 private view
      系统会再映射一块内存区域供journal使用,称之为private view,mongodb默认每100ms刷新privateView到journal(在开启journal情况下) 如果系统断电.会容忍这100ms的数据丢失,当服务重启时,会利用journal进行恢复
   3 mongo的journal和mysql的redo效果一样,日志先行.但是有一点不同的是,mongo的journal的功能是可以关闭的
五  系统相关
   1 当单个文件达到1GB的时候,就会创建一个新的文件,旧文件不会循环使用,自动删除
   2 文件构成
    1 lsn代表最后使用的journal序列号
    2 prealloc 代表已经分配但是还没有使用的文件
   3 j.*代表的是正在使用的journal文件
六  系统命令
   1 journal延迟测试的函数,
      db.runCommand("journalLatencyTest"):
  2 启动
     journal = true
  3 查看journal运行状态
     db.serverstatus() dur相关,具体请自行查看
     commitsInWriteLock:在有写锁的情况下提交的数量,这表示写的压力很大
     earlyCommits:表示在journalCommitInterval之前的时间,mongod请求提交的次数。用这个参数确定journalCommitInterval是不是设置的过长。
 4 journalCommitInterval 
     默认100ms,根据上述的监控指标可以进行结合判断是否要进行调整。
七  相关问题
1 journal本身占据过大的问题
   推断 可能是由于大批量瞬间事务引起的

原文地址:https://www.cnblogs.com/danhuangpai/p/11022789.html

时间: 2024-10-08 07:22:00

mongodb 系列 ~ journal日志畅谈的相关文章

MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范--GridFS. GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的数据,一

MongoDB实战指南(四):MongoDB的Journaling日志功能

mongoDB的Journaling日志功能与常见的log日志是不一样的,mongoDB也有log日志,它只是简单记录了数据库在服务器上的启动信息.慢查询记录.数据库异常信息.客户端与数据库服务器连接.断开等信息.Journaling日志功能则是mongoDB里面非常重要的一个功能,它保证了数据库服务器在意外断电.自然灾害等情况发生下数据的完整性.尽管mongoDB还提供了其它的复制集等备份措施(后面会分析),但Journaling的功能在生产环境中是不可缺少的,它依靠了较小的CPU和内存消耗,

mongodb系列之-治理mongodb->db.currentOp()

mongodb系列之-管理mongodb->db.currentOp() 管理mongodb->db.currentOp(), 绝对是原创... 今天公司的dba在内部分享了针对mysql上具体的每个crud语句操作如何进行控制管理(利用的inntop工具),挺好的.这里,我也献丑下,在mongodb中如何管理具体的每个crud操作(比如某个查询语句慢,太占资源,直接可以将其kill掉,这貌似很暴力哈,不过没关系,有时候不得已而为之...不过mongodb中可不是用第三方的工具哦,而是自家实现

mongodb系列~配置文件的优化与处理

一 简介:讲讲如何优化mongo配置文件二 常规参数     port= //端口     fork=true//守护进程方式启动mongo     logpath=shard.log //mongo日志存放路径     journal= true//redo log开启     nohttpinterface = true //关闭http端口,提高安全性     directoryperdb = true // 每个db会创建一个单独的目录     logappend = true //日志

MongoDB系列(一):简介及安装

什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高性能数据存储解决方案. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成. MongoDB 文档(BSON)类似于 JSON 对象.字段值可以包含其他文档,数组及文档数组. MongoDB的特点 1. MongoDB的提供了一个面向文档存储,操作起来比较简单和容易.

MongoDB的追加日志设置生成新的日志文件

MongoDB的日志文件在设置 logappend=true 的情况下,会不断向同一日志文件追加的,时间长了,自然变得非常大. 解决如下:(特别注意:启动的时候必须是--logpath指定了log路径的) 用mongo连接到服务端   复制代码 代码如下: use admin  //切换到admin数据库 db.runCommand({logRotate:1}) 这样会使mongo关闭当前日志文件,重启一个新的日志文件,不需要停止mongodb服务

mongoDB系列之(二):mongoDB 副本集

1. 什么是副本集 副本集就是mongoDB副本所组成的一个集群. 同期原理是,写操作发生在主库,从库同步主库的OpLog日志. 集群中没有特定的主库,主库是选举产生,如果主库down了,会再选举出一台主库. mongoDB也可以配置成主从模式,但,官方已经不建议使用主从模式了,替代方案是采用副本集的模式. 副本集有以下特点: 1. 最小构成是:primary,secondary,arbiter,一般部署是:primary,2 secondary. 2. 成员数应该为奇数,如果为偶数的情况下添加

MongoDB 系列教程

系列目录 MongoDB学习笔记(一) MongoDB介绍及安装 MongoDB学习笔记(二) 通过samus驱动实现基本数据操作 MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据 MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系 MongoDB学习笔记(五) MongoDB文件存取操作 MongoDB学习笔记(六) MongoDB索引用法和效率分析

MongoDB系列:把mongodb作为windows的服务来启动

1.首先切换到mongodb安装目录下的bin目录,在控制台直接运行以下命令 "C:\Program Files\MongoDB\Server\3.0\bin\mongod.exe" --logpath "D:\mongodb\logs\mongodb.log" --dbpath "D:\mongodb\data" --install --journal ps: 1.必须用管理员身份在命令后运行控制台 2.d盘下必须先创建好mongodb/dat