PostgreSQL启动恢复通过检查站开放细胞膜文件

  
 <代码> StartupLOG::
  →记录=ReadCheckpointRecord (xlogreader ControlFile→检查点,1,真的)
  →记录=ReadRecord (xlogreader ControlFile→检查点,日志,真的)
  →记录=XLogReadRecord (xlogreader ControlFile→检查点,,errormsg);
  →readOff=ReadPageInternal(状态,ControlFile→检查点——(ControlFile→检查点% XLOG_BLCKSZ)、Min (ontrolFile→检查点% XLOG_BLCKSZ + SizeOfXLogRecord XLOG_BLCKSZ));
  →|——pageptr=ControlFile→检查点——(ControlFile→检查点% XLOG_BLCKSZ)
  |——targetPageOff=(pageptr % XLogSegSize);//段文件偏移
  |——targetSegmentPtr=pageptr - targetPageOff;
  |——readLen=状态→read_page(状态,targetSegmentPtr (0 ?), XLOG_BLCKSZ, ControlFile→检查点,状态→readBuf,和状态→readPageTLI);
  →WaitForWALToBecomeAvailable (targetSegmentPtr (0) + XLOG_BLCKSZ,私人→randAccess, 1, targetRecPtr)
  →readFile=XLogFileReadAnyTLI (targetSegmentPtr/XLogSegSize DEBUG2, currentSource==XLOG_FROM_ARCHIVE吗?XLOG_FROM_ANY currentSource):
  →fd=XLogFileRead (segno、emode, tli XLOG_FROM_ARCHIVE或者XLOG_FROM_PG_WAL,真的)
  →fd=BasicOpenFile(路径,O_RDONLY | PG_BINARY, 0);
  →fd=open (fileName, fileFlags fileMode)  

PostgreSQL启动恢复通过检查站开放细胞膜文件