千家信息网

PostgreSQL启动恢复通过checkpoint open wal文件

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,StartupLOG::->record = ReadCheckpointRecord(xlogreader, ControlFile->checkPoint, 1, true)->record =
千家信息网最后更新 2025年11月07日PostgreSQL启动恢复通过checkpoint open wal文件
StartupLOG::->record = ReadCheckpointRecord(xlogreader, ControlFile->checkPoint, 1, true)->record = ReadRecord(xlogreader, ControlFile->checkPoint, LOG, true)->record = XLogReadRecord(xlogreader, ControlFile->checkPoint, &errormsg);->readOff = ReadPageInternal(state,ControlFile->checkPoint - (ControlFile->checkPoint % XLOG_BLCKSZ), Min(ontrolFile->checkPoint % XLOG_BLCKSZ + SizeOfXLogRecord, XLOG_BLCKSZ));->|--pageptr=ControlFile->checkPoint - (ControlFile->checkPoint % XLOG_BLCKSZ)  |--targetPageOff = (pageptr % XLogSegSize);//段文件偏移  |--targetSegmentPtr = pageptr - targetPageOff;  |--readLen = state->read_page(state, targetSegmentPtr(0?), XLOG_BLCKSZ,ControlFile->checkPoint, state->readBuf, &state->readPageTLI);->WaitForWALToBecomeAvailable(targetSegmentPtr(0?) + XLOG_BLCKSZ,private->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, true)->fd = BasicOpenFile(path, O_RDONLY | PG_BINARY, 0);->fd = open(fileName, fileFlags, fileMode)
0