栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Mongo 持久化(durability)机制

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mongo 持久化(durability)机制

Mongo的持久化过程

先将内存中的多个写入命令(包括插入,修改操作) 达到一定的时间或空间后,写入到日志系统中的日志文件(硬盘)里, 然后日志文件中的内容 在达到一定时间后,同步到数据文件中,从而保证数据的持久性;

也就是 一个插入操作,需要在内存中 同步到硬盘的日志文件中,再同步到数据文件中 共3个过程;

其中可能存在的 丢失数据的情况 在 内存中的命令同步到日志文件的过程中; mongo默认每100毫秒或达到规定字节时 同步到日志文件, 也就是 顶多有100毫秒的数据会丢失;

Mongo设置绝不丢失数据,及副作用

可以通过设置 强制同步到日志的命令 将 每个写入命令 同步到日志;

命令如下:

db.runCommand({"getLastError":1,'j':true})

此命令 在写入命令同步到日志后,会等待30毫秒,才能进行下一次同步到日志; 因此会限制 写入操作的次数(1s/30毫秒=33次),导致 写入能力下降;

设置 写入命令同步到日志的时间间隔 

命令如下:

db.adminCommand({'setParameter':1,'journalCommitInterval':10})

journalCommitInterval参数的值范围为 2-500毫秒; 此值越小,丢失数据越少;

总结
  • mongo从内存同步到硬盘 如果保证强持久化,会导致写入能力下降;如果不设置强持久化 会导致 丢失数据的可能; 只能两者之间平衡操作(或根据需求) 将 写入命令同步到日志时间间隔尽量小;

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311149.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号