rocksdb源码解析:log文件恢复

	我们知道rockdb作为kv存储,采用的WAL方式来写日志,即预写日志,每次要对数据操作之前,先写日志保存起来,然后在进行相应操作。这样当发生某些意外而导致还未写到磁盘中的数据丢失时,我们可以采用log文件来进行恢复。通过读取磁盘中的内容和已知的WAL日志,就可以恢复到最新的状态。而memtable和未写入磁盘的immemtable则从log文件中读出来,重做memtable和immemtable到sstable中即可。
	整个恢复流程粗略如下流程图:
 
在DBImpl::Recover()函数中,NEWDB()是创建新的生成全新的manifest和current文件,然后获取wal文件目录,如果目录为空,则返回,否则开始recoverlogfile()操作。恢复的是memtable及immtable中还未持久化到SSTable中的数据。
 
 
接下来的日志操作就是恢复内存中的数据了,重做日志操作即是将日志中记录的操作读取出来,然后再将读取到的操作重新写入到rocksdb中,如果缓存大小大于写缓存尺寸,就写入到保存
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页