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

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值