mongodb检查点_Mongodb 日志原理和操作
日志原理:
WiredTiger使用检查点在磁盘上提供一致性数据视图,并允许MongoDB从上一个检查点恢复。 但是,如果MongoDB在检查点之间意外退出,则需要使用日志记录来恢复上次检查点之后发生的信息。
通过日志记录,恢复过程如下:
查看数据文件以查找上一个检查点的标识符。
在日志文件中搜索与上一个检查点的标识符相匹配的记录。
自上次检查点以来,在日志文件中应用这些操作。
MongoDB WiredTiger 首先使用内存缓冲来存储日志记录,直到超过128 kB,才写入磁盘。根据以下时间间隔或条件,WiredTiger将缓冲的日记记录同步到磁盘:
3.2版新增功能:每50毫秒。
版本3.6中:MongoDB 设置检查点以60秒的间隔执行。
如果写入操作包含 j:true 的写入指令,则WiredTiger会强制WiredTiger日志文件同步。
由于MongoDB使用的日志文件大小限制为100 MB,WiredTiger大约每隔100 MB创建一个新的日志文件。当WiredTiger创建新的日志文件时,WiredTiger将同步前一个日志文件。
注意:
在写操作之间,当日志记录保留在WiredTiger缓冲区中时,在mongod强制关闭时更新可能会丢失。
日志方式:
不开启 journal
,写入 wiredtiger 的数据,并不会立即持久化存储;而是每分钟会做一次全量的checkpoint(
storage.syncPeriodSecs
配置项,默认为1分钟),将所有的数据持久化。
开启 journal 后
,每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。这样即使出现宕机,启动时 Wiredtiger 会先将数据恢复到最近的一次checkpoint的点,然后重放后续的 journal 操作日志来恢复数据。
MongoDB 里的 journal 行为 主要由2个参数控制,
storage.journal.enabled
决定是否开启journal,
storage.journal.commitInternalMs
决定 journal 刷盘的间隔(
journal操作的最大间隔时间。可以是2-300ms之间的值,低的值有助于持久化,但是会增加磁盘的额外负担。
如果journal和数据文件在同一磁盘上,默认为100ms。如果在不同的磁盘上为30ms。
如果强制mongod提交日志文件,可以指定j:true,指定后,时间变为原来的三分之一
),默认为100ms,用户也可以通过写入时指定 writeConcern 为 {j: ture} 来每次写入时都确保 journal 刷盘。
日志切换:
use admin
db.runCommand( { logRotate : 1 } )
后者:
1 3 * * * killall -SIGUSR1 mongod
3 3 * * * killall -SIGUSR1 mongos
15 3 * * * /usr/bin/find /data/mongodb/data/prod_shard2_1/log/ -name "mongodb.log.*" -mtime +30 -exec rm -fr {} \;
19 3 * * * /usr/bin/find /data/mongodb/data/prod_configdb2/log/ -name "mongodb.log.*" -mtime +30 -exec rm -fr {} \;
21 3 * * * /usr/bin/find /data/mongodb/data/prod_mongos/log/ -name "mongodb.log.*" -mtime +30 -exec rm -fr {} \;
日志级别在配置文件中的加入:
use admin
db.runCommand( {
setParameter: 1,
logComponentVerbosity: {
verbosity: 1,
query: {
verbosity: 2
},
storage: {
verbosity: 2,
journal: {
verbosity: 1
}
}
}
} )
或者:
verbose&&quiet
mongodb默认情况下日志文件非常大,每秒都会记录大量的connection等调试信息,这对于我们管理日志和定位 错误有很大影响,需要修改它的默认日志级别。
mongodb的日志级别在配置文件中的verbose和quiet参数决定。verbose表示会打印debug信息,范例配置如下
verbose=true
vv=true
注:这里的vv表示debug级别,有vv-vvvvv,v越多则记录的日志信息越详细。
而如果设置了quiet=true参数,表示安静地输出,即不会再有debug信息,日志中只会打印一些关键的信息,比如 自动故障切换,系统错误等信息,相当于error log。这时需要注释掉verbose参数。范例配置如下:
#verbose=true
quiet=true
mongodb检查点_Mongodb 日志原理和操作相关推荐
- mongodb检查点_MongoDB从入门到优化
一.MongoDB 简介 本文的内容是基于 MongoDB 4.0 的. 参考于 MongoDB 4.0 官方文档. MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. ...
- mongodb检查点_mongodb 监控命令mongostat
mongodb 监控命令mongostat 2016/03/07 15:11 于 数据分析 mongostat实用工具提供了mongoDB一个实例快速概述和当前运行的状态.mongostat功能类似于 ...
- MongoDB安装、群集原理
MongoDB安装.群集原理 安装 Windows 直接在官网下载 配置文件为安装路径下/bin/mongod.cfg 启动:net start mongodb 停止:net stop mongodb ...
- Kong+Konga配置原理、操作 学习分享
Kong+Konga配置原理.操作 学习分享 一.什么是Kong,为什么使用Kong 1.首先知道为什么要使用网关: 2.什么是Kong? 3.Kong的安装: 4.什么是Konga? 6.怎么判断s ...
- MongoDB内部的存储原理
基础篇(能解决工作中80%的问题): MongoDB的概述.应用场景.下载方式.连接方式和发展历史等 MongoDB数据类型.重要概念以及shell常用指令 MongoDB文档的各种增加.更新.删除操 ...
- MongoDB使用小结:一些常用操作分享
MongoDB使用小结:一些常用操作分享 本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell.pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程 ...
- Git理论、原理、操作
Git理论.原理.操作 Git简介: 一个开源的分布式版本控制系统.用于处理任何大大小小的项目,是一个开放源码的版本控制软件. Git与SVG的区别: 1.git是分布式的 2.git把内容按元数据方 ...
- mongodb分片概念和原理-实战分片集群
一.分片 分片是一种跨多台机器分发数据的方法.MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署. 问题: 具有大型数据集或高吞吐量应用程序的数据库系统可能会挑战单个服务器的容量.例如 ...
- MySQL怎么运行的系列(八)14张图说明白MySQL事务原子性和undo日志原理
本系列文章目录 展开/收起 MySQL怎么运行的系列(一)mysql体系结构和存储引擎 MySQL怎么运行的系列(二)Innodb缓冲池 buffer pool 和 改良版LRU算法 Mysql怎么运 ...
最新文章
- R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练、通过显著性进行变量筛选(删除相关性较强的变量)、构建多变量模型、转化为分类模型、模型评估
- 【内推】滴滴出行视觉计算组招聘算法实习生
- stm32 micropython vscode_在vscode里基于Pymakr插件进行esp32的micropython开发
- linux那点事儿(五)----用户管理常用命令 (转)
- iResearch_2008年度中国互联网经济及核心行业核心数据发布
- C语言switch分支结构
- python办公代码_[Python] 自动化办公 docx操作Word基础代码
- jdk8切换成jdk6_运行中的JDK语言功能预览:切换表达式
- exchange 删除邮件
- 调整linux块大小,Linux系统之更改默认块大小
- 深度学习笔记(27) 经典卷积网络
- 查询成绩最好的前两名_官宣!CPA考试成绩查询时间+合格标准+查询入口+成绩复核!注会考生查分前不看亏大了...
- 解决https无法缓存的问题
- iOS 数据存储 FMDB
- 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof
- java 有限状态机_有限状态机( Finite State Machine )JAVA 版
- 数据库索引的作用以及索引基本原理
- cnn风格迁移_CNN图像风格迁移的原理及TensorFlow实现
- Japan games Android,Learn Japanese with Games
- 你相信吗?这是210万“像素”人工画成的肖像_-Chaz-_新浪博客
热门文章
- Rust从入门到放弃(1)—— hello,world
- 2019河北省大学生程序设计竞赛(重现赛)B 题 -Icebound and Sequence ( 等比数列求和的快速幂取模)...
- ConcurrentHashMap 解读
- 恢复Ext3下被删除的文件(转)
- BMP格式图像的显示
- http --- 用于HTTP调试的最小型Perl Web 服务器
- 抢火车票这个事吧,其实我也能做!(python黑科技)
- 世界杯快到了,看我用Python爬虫实现(伪)球迷速成!
- 绝非玩笑!人工智能或开创黑客新时代
- 如何在Debian上安装配置ownCloud