亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > PostgreSQL實戰之啟動恢復讀取checkpoint記錄失敗的條件詳解

PostgreSQL實戰之啟動恢復讀取checkpoint記錄失敗的條件詳解

熱門標簽:地圖標注和圖片名稱的區別 重慶自動外呼系統定制 漯河外呼電話系統 美容工作室地圖標注 打電話智能電銷機器人授權 合肥公司外呼系統運營商 海豐有多少商家沒有地圖標注 辦公外呼電話系統 外呼調研系統

1、首先讀取ControlFile->checkPoint指向的checkpoint

2、如果讀取失敗,slave直接abort退出,master再次讀取ControlFile->prevCheckPoint指向的checkpoint

StartupXLOG->
 |--checkPointLoc = ControlFile->checkPoint;
 |--record = ReadCheckpointRecord(xlogreader, checkPointLoc, 1, true):
 |-- if (record != NULL){
   ...
  }else if (StandbyMode){
   ereport(PANIC,(errmsg("could not locate a valid checkpoint record")));
  }else{
   checkPointLoc = ControlFile->prevCheckPoint;
   record = ReadCheckpointRecord(xlogreader, checkPointLoc, 2, true);
   if (record != NULL){
    InRecovery = true;//標記下面進入recovery
   }else{
    ereport(PANIC,(errmsg("could not locate a valid checkpoint record")));
   }
  }

一、那么什么條件下讀取的checkpoint記錄record==NULL?

1、ControlFile->checkPoint % XLOG_BLCKSZ SizeOfXLogShortPHD
2、ReadRecord(xlogreader, ControlFile->checkPoint, LOG, true)返回NULL
3、ReadRecord讀到的record!=NULL record->xl_rmid != RM_XLOG_ID
4、ReadRecord讀到的record!=NULL info != XLOG_CHECKPOINT_SHUTDOWN info != XLOG_CHECKPOINT_ONLINE
5、ReadRecord讀到的record!=NULL record->xl_tot_len != SizeOfXLogRecord + SizeOfXLogRecordDataHeaderShort + sizeof(CheckPoint)

二、ReadRecord函數返回NULL的條件

ReadRecord(xlogreader, ControlFile->checkPoint, LOG, true)
 |--record = XLogReadRecord(xlogreader, ControlFile->checkPoint, errormsg);
 |-- 2.1 record==NULL  !StandbyMode
 |-- 2.2 record!=NULL  !tliInHistory(xlogreader->latestPageTLI, expectedTLEs)
 /*-----
 note:只要讀取了一頁xlog,就會賦值為該頁第一個記錄的時間線
 XLogReaderValidatePageHeader
  -->xlogreader->latestPageTLI=hdr->xlp_tli;
 ------*/

三、XlogReadRecord讀取checkpoint返回NULL的條件?

XLogReadRecord(xlogreader, ControlFile->checkPoint, errormsg)
    targetPagePtr = ControlFile->checkPoint - (ControlFile->checkPoint % XLOG_BLCKSZ);
    targetRecOff = ControlFile->checkPoint % XLOG_BLCKSZ;
    readOff = ReadPageInternal(state,targetPagePtr, Min(targetRecOff + SizeOfXLogRecord, XLOG_BLCKSZ));
    pageHeaderSize = XLogPageHeaderSize((XLogPageHeader) state->readBuf);
    record = (XLogRecord *) (state->readBuf + RecPtr % XLOG_BLCKSZ);
    total_len = record->xl_tot_len;
    -------------
    1、readOff 0
    2、0 targetRecOff pageHeaderSize
    3、(((XLogPageHeader) state->readBuf)->xlp_info XLP_FIRST_IS_CONTRECORD) targetRecOff == pageHeaderSize
       page頭有跨頁的record并且checkpoint定位的偏移正好在頁頭尾部
    4、targetRecOff = XLOG_BLCKSZ - SizeOfXLogRecord
       !ValidXLogRecordHeader(state, ControlFile->checkPoint, state->ReadRecPtr, record,randAccess)
       ---(record->xl_tot_len SizeOfXLogRecord || record->xl_rmid > RM_MAX_ID || record->xl_prev != state->ReadRecPtr)
    5、targetRecOff > XLOG_BLCKSZ - SizeOfXLogRecord total_len SizeOfXLogRecord
    6、total_len > state->readRecordBufSize !allocate_recordbuf(state, total_len)
       一旦該記錄損壞,total_len的長度非常大的話,就需要allocate_recordbuf擴展state->readbuf,可能因此分配失敗abort
       記錄的checksum需要等待全部讀取完整記錄后才校驗
    -------------

三、ReadPageInternal返回的readOff返回小于0的條件

ReadPageInternal(state,targetPagePtr, Min(targetRecOff + SizeOfXLogRecord, XLOG_BLCKSZ))

    1、第一次read wal文件,readLen = state->read_page:讀取第一頁。readLen 0

    2、readLen>0 !XLogReaderValidatePageHeader(state, targetSegmentPtr, state->readBuf)
    --

    3、讀取checkpoint所在頁readLen = state->read_page: readLen 0

    4、readLen > 0 readLen = SizeOfXLogShortPHD

    5、!XLogReaderValidatePageHeader(state, pageptr, (char *) hdr)

四、XLogPageRead何時返回值0 ?

/*
 1、WaitForWALToBecomeAvailable open失敗
 2、lseek 失敗  !StandbyMode
 3、read失敗  !StandbyMode
 4、校驗page頭失敗  !StandbyMode
 如果是StandbyMode,則會重新retry->WaitForWALToBecomeAvailable,切換日志源進行open
 */
 !WaitForWALToBecomeAvailable(targetPagePtr + reqLen,private->randAccess,1,targetRecPtr)//open
 |-- return -1
 readOff = targetPageOff;
 if (lseek(readFile, (off_t) readOff, SEEK_SET)  0){
  !StandbyMode:: return -1
 }
 if (read(readFile, readBuf, XLOG_BLCKSZ) != XLOG_BLCKSZ){
  !StandbyMode:: return -1
 }
 XLogReaderValidatePageHeader(xlogreader, targetPagePtr, readBuf)
 !StandbyMode:: return -1

五、WaitForWALToBecomeAvailable何時返回false?

--XLOG_FROM_ARCHIVE | XLOG_FROM_PG_WAL
    1、先XLogFileReadAnyTLI open日志:
        1、遍歷時間線列表里的每一個時間線,從最新的開始
        2、當讀取checkpoint的時候,source是XLOG_FROM_ANY
        3、先找歸檔的日志進行open;如果open失敗再找WAL日志進行open
        4、如果都沒有open成功,則向前找時間線,open前一個時間線segno和文件號相同的文件進行open
        5、open成功后expectedTLEs被賦值為當前時間線列表的所有值
    2、如果open失敗,則切換日志源:XLOG_FROM_ARCHIVE | XLOG_FROM_PG_WAL -> XLOG_FROM_STREAM
    3、切換日志源后,XLOG_FROM_ARCHIVE | XLOG_FROM_PG_WAL 則:
       slave promote :return false
       !StandbyMode:return false
    --XLOG_FROM_STREAM
    1、!WalRcvStreaming()即receiver進程掛了,切換日志源
    2、CheckForStandbyTrigger()切換日志源
    3、XLOG_FROM_STREAM->XLOG_FROM_ARCHIVE

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • PostgreSQL中的template0和template1庫使用實戰
  • PostgreSQL存儲過程用法實戰詳解
  • postgresql影子用戶實踐場景分析

標簽:錦州 株洲 來賓 晉城 蚌埠 烏海 衡陽 珠海

巨人網絡通訊聲明:本文標題《PostgreSQL實戰之啟動恢復讀取checkpoint記錄失敗的條件詳解》,本文關鍵詞  PostgreSQL,實戰,之,啟動,恢復,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL實戰之啟動恢復讀取checkpoint記錄失敗的條件詳解》相關的同類信息!
  • 本頁收集關于PostgreSQL實戰之啟動恢復讀取checkpoint記錄失敗的條件詳解的相關信息資訊供網民參考!
  • 推薦文章
    九九九网站| 日日夜夜婷婷| 日韩一级精品视频在线观看| 精品在线观看国产| 精品国产一区二区三区精东影业 | 青青久久国产成人免费网站| 欧美激情伊人| 黄视频网站在线看| 麻豆网站在线免费观看| 精品视频免费看| a级毛片免费观看网站| 久久99这里只有精品国产| 二级特黄绝大片免费视频大片| 精品毛片视频| 久久精品店| 国产美女在线观看| 日韩男人天堂| 青青青草影院 | 欧美另类videosbestsex久久| 国产一区二区精品| 午夜激情视频在线播放| 青青青草视频在线观看| 你懂的福利视频| 美女免费精品高清毛片在线视 | 欧美一级视频免费| 成人影院一区二区三区| 国产成+人+综合+亚洲不卡| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产视频久久久久| 午夜在线观看视频免费 成人| 黄视频网站在线免费观看| 四虎精品在线观看| 中文字幕一区二区三区精彩视频 | 午夜欧美成人久久久久久| 成人免费观看网欧美片| 日本免费看视频| 国产精品免费久久| 久久精品大片| 国产成人精品综合在线| 国产麻豆精品免费密入口| 亚洲第一视频在线播放| 国产亚洲免费观看| 日韩男人天堂| 九九久久99综合一区二区| 黄视频网站免费| 日韩中文字幕在线观看视频| 国产伦久视频免费观看 视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 四虎影视久久| 999精品在线| 国产极品精频在线观看| 韩国三级视频网站| 午夜在线亚洲| 高清一级淫片a级中文字幕| 国产亚洲精品成人a在线| 国产精品自拍亚洲| 久草免费在线视频| 九九九网站| 精品视频免费看| 午夜家庭影院| 九九久久99| 免费的黄视频| 九九精品在线播放| 精品国产一区二区三区免费| 国产欧美精品午夜在线播放| 天天色色色| 免费一级片在线观看| 成人a级高清视频在线观看| 久草免费在线视频| 国产一级生活片| 麻豆系列 在线视频| 久久精品免视看国产成人2021| 亚欧成人乱码一区二区| 久久成人综合网| 精品美女| 日韩一级黄色| 麻豆网站在线免费观看| 日韩免费片| 99色视频| 可以免费在线看黄的网站| 色综合久久久久综合体桃花网| 国产国产人免费视频成69堂| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产精品1024在线永久免费| 国产一区二区精品| 韩国三级视频网站| 亚洲 男人 天堂| 国产91视频网| 欧美激情一区二区三区在线播放| 日韩一级精品视频在线观看| 尤物视频网站在线| 亚洲精品久久玖玖玖玖| 欧美激情一区二区三区视频| 毛片电影网| 中文字幕一区二区三区精彩视频 | 日韩男人天堂| 欧美大片一区| 久久99这里只有精品国产| 人人干人人草| 高清一级毛片一本到免费观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 黄色福利片| 欧美一级视频免费观看| 国产麻豆精品视频| 国产伦久视频免费观看 视频| 免费毛片基地| 欧美a免费| 99热精品一区| 精品国产一区二区三区久 | 日韩在线观看视频免费| 沈樵在线观看福利| 欧美α片无限看在线观看免费| 日韩字幕在线| 韩国三级香港三级日本三级la| 国产成人精品在线| 亚洲女人国产香蕉久久精品| 免费毛片基地| 日韩欧美一二三区| 精品在线观看国产| 日本伦理片网站| 九九免费高清在线观看视频| 欧美激情一区二区三区视频高清| 精品久久久久久综合网| 日韩字幕在线| 国产视频一区在线| 日韩字幕在线| 你懂的在线观看视频| 久久国产影视免费精品| 中文字幕Aⅴ资源网| 国产91精品一区| 一级毛片视频免费| 日韩欧美一二三区| 你懂的在线观看视频| 精品国产一区二区三区免费| 国产麻豆精品hdvideoss| 天天色色色| 999久久狠狠免费精品| 深夜做爰性大片中文| 欧美a级片视频| 久久99中文字幕| 四虎论坛| 日韩字幕在线| 免费一级生活片| 日韩免费片| 99热热久久| 毛片电影网| 人人干人人草| 国产成人精品在线| 亚洲爆爽| 精品视频在线观看免费| 久久国产精品只做精品| 深夜做爰性大片中文| 国产一区二区精品在线观看| 国产91精品系列在线观看| 欧美日本韩国| 你懂的在线观看视频| 精品国产三级a| 深夜做爰性大片中文| 久久国产影视免费精品| 四虎影视库国产精品一区| 免费国产一级特黄aa大片在线| 国产视频一区二区在线播放| 成人高清护士在线播放| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 91麻豆精品国产综合久久久| 国产高清视频免费| 精品美女| 精品久久久久久中文| 黄色福利片| 亚洲天堂一区二区三区四区| 97视频免费在线| 日韩字幕在线| 日韩专区第一页| 成人免费高清视频| 免费的黄色小视频| a级精品九九九大片免费看| 日本在线不卡免费视频一区| 成人在免费观看视频国产| 久久精品店| 91麻豆爱豆果冻天美星空| 亚欧视频在线| 日本特黄特色aa大片免费| 国产视频一区二区在线播放| 精品视频一区二区三区免费| 韩国三级香港三级日本三级| 国产高清在线精品一区a| a级毛片免费全部播放| 国产原创中文字幕| 美国一区二区三区| 91麻豆高清国产在线播放| 精品国产香蕉在线播出| 欧美一级视频高清片| 青青青草影院 | 亚洲天堂在线播放| 99热精品一区| 可以免费看污视频的网站| 99热精品一区| 99久久视频| 国产网站在线| 一级女性大黄生活片免费|