现在的位置: 首页 > 综合 > 正文

Mongo Journal Recovery

2014年09月05日 ⁄ 综合 ⁄ 共 428字 ⁄ 字号 评论关闭

由RecoveryJob来完成,针对每个文件processFile,做memory map之后调用processFileBuffer,每个文件由多个section组成,每个section包括JSectHeader,data和JSectFooter构成。数据使用snappy进行了压缩,footer提供md5校验。每个section都有seqNumber(实际上是时间戳),对于上次datasynctime(从lsn文件中读取)10秒以前的section直接skip,不做recovery(是否有问题?)。
section中包括很多JEntry,解析之后为ParsedJournalEntry,分为group commit类和DurOp类(FileCreateOp和DropDbOp)。group commit都是写操作,调用applyEntry恢复时直接将journal文件中的srcData回写到数据文件的offset处,不知道mongo如何保证不会越界之类的。

抱歉!评论已关闭.