EncodeTo()
和 DecodeFrom()
方法分别用于将 VersionEdit 序列化为 manifest 记录和从 MANIFEST 记录中反序列化出 VersionEditLogAndApply()
把 VersionEdit 应用到当前版本上,并新增一条记录 VersionSet::Builder
LogAndApply()
和从 manifest 文件中恢复版本信息的时候都会用到它从重启中恢复需要做两件事
VersionSet::Recover()
中DBImpl::Recover()
的后半部分如果 MANIFEST 文件丢失,那么能否恢复出版本信息呢?
答案是可以的,LevelDB 提供了 Repairer
类用来从日志文件和 sstable 文件中恢复出版本信息
恢复过程遍历了整个 DB 的全部文件,所以是相当耗时的过程
Chile Address 版权所有
Powered by WordPress