婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

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庫使用實戰(zhàn)
  • PostgreSQL存儲過程用法實戰(zhàn)詳解
  • postgresql影子用戶實踐場景分析

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

巨人網絡通訊聲明:本文標題《PostgreSQL實戰(zhàn)之啟動恢復讀取checkpoint記錄失敗的條件詳解》,本文關鍵詞  PostgreSQL,實戰(zhàn),之,啟動,恢復,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL實戰(zhàn)之啟動恢復讀取checkpoint記錄失敗的條件詳解》相關的同類信息!
  • 本頁收集關于PostgreSQL實戰(zhàn)之啟動恢復讀取checkpoint記錄失敗的條件詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美一区二视频| 99久久99久久免费精品蜜臀| 欧美日韩中文字幕一区二区| 国产成人精品亚洲日本在线桃色 | 国产精品美女久久久久久久| 久久久电影一区二区三区| 国产亚洲综合性久久久影院| 国产精品久线在线观看| 亚洲婷婷综合色高清在线| 亚洲精品免费视频| 午夜精品久久久久久久蜜桃app| 亚洲成人免费观看| 国产精品一区二区三区99| 国产精品一区二区视频| 91色综合久久久久婷婷| 欧美男男青年gay1069videost| 26uuu久久综合| 日韩欧美中文字幕一区| 亚洲日本一区二区三区| 激情久久久久久久久久久久久久久久| 日韩一级黄色片| 蜜桃视频免费观看一区| 久久久.com| 在线欧美一区二区| 国产九色sp调教91| 色欧美片视频在线观看| 91蜜桃在线免费视频| 91久久国产最好的精华液| 欧美性做爰猛烈叫床潮| 在线观看免费成人| 精品国产a毛片| 国产精品美女久久久久高潮| 日韩国产在线观看| 日本美女一区二区| 精品制服美女丁香| 国产酒店精品激情| 国产一区二区毛片| 亚洲女同ⅹxx女同tv| 成人午夜av影视| 国产精品福利在线播放| 亚洲成av人片一区二区梦乃| 宅男在线国产精品| 国产在线观看一区二区| 亚洲国产精品黑人久久久| 国产成人aaaa| 综合久久给合久久狠狠狠97色| 不卡视频一二三四| 亚洲444eee在线观看| 日韩欧美国产高清| 白白色 亚洲乱淫| 亚洲成人av中文| 2023国产一二三区日本精品2022| 国产一区二区调教| 国产精品区一区二区三| 欧美另类videos死尸| 成人毛片视频在线观看| 视频一区视频二区中文| 久久嫩草精品久久久精品一| 9色porny自拍视频一区二区| 秋霞影院一区二区| 中文字幕在线观看不卡视频| 欧美一区国产二区| eeuss鲁片一区二区三区| 九九视频精品免费| 一区二区三区欧美日| 亚洲欧美综合网| 国产精品盗摄一区二区三区| 一区二区三国产精华液| 夜夜嗨av一区二区三区网页 | 国产精品免费看片| 亚洲美女视频一区| 久久久精品人体av艺术| 97se亚洲国产综合自在线观| 午夜精品国产更新| 亚洲九九爱视频| 欧美白人最猛性xxxxx69交| 国产91精品久久久久久久网曝门| 精品久久久三级丝袜| 色综合婷婷久久| 91蝌蚪porny成人天涯| 专区另类欧美日韩| www.亚洲人| 国产午夜精品在线观看| 在线视频中文字幕一区二区| 日韩欧美在线1卡| 午夜日韩在线电影| 不卡的电视剧免费网站有什么| 欧美在线一区二区三区| 成人激情校园春色| 看片的网站亚洲| 中文字幕成人网| 久久久综合视频| 91丨porny丨户外露出| 欧美乱熟臀69xxxxxx| 亚洲视频一二三区| 欧美亚洲自拍偷拍| 国产九色精品成人porny | 五月婷婷激情综合| 亚洲午夜电影在线观看| 国产专区欧美精品| 欧美日韩精品二区第二页| 久久蜜桃一区二区| 亚洲国产成人91porn| 粉嫩嫩av羞羞动漫久久久| 2020国产精品| 精品一区二区久久| 久久久久久久久岛国免费| 性久久久久久久久| 欧美午夜在线观看| 亚洲丝袜另类动漫二区| 国产高清久久久久| 精品国产91洋老外米糕| 午夜视频一区二区| 欧美日韩在线观看一区二区| 亚洲欧美一区二区三区孕妇| 成人动漫在线一区| 亚洲欧洲成人精品av97| 国产乱理伦片在线观看夜一区| 欧美精品v日韩精品v韩国精品v| 国产精品大尺度| 色老汉av一区二区三区| 又紧又大又爽精品一区二区| 欧美一区日韩一区| 久久久久国产成人精品亚洲午夜| 99精品欧美一区二区三区小说| 午夜精品久久久久久久99樱桃| 日韩欧美一级二级| 91成人在线观看喷潮| 成人午夜av电影| 老司机一区二区| 青青草原综合久久大伊人精品| 亚洲欧洲色图综合| 亚洲精品一区二区三区在线观看 | 舔着乳尖日韩一区| 色狠狠色噜噜噜综合网| 亚洲日本欧美天堂| 欧美精品vⅰdeose4hd| 日日夜夜精品视频天天综合网| 久久久久久久久久久久久女国产乱| 天天做天天摸天天爽国产一区| 久久理论电影网| 国产精品羞羞答答xxdd| 国产成人综合网站| 中文字幕制服丝袜成人av| 9191国产精品| 中文字幕欧美激情| 亚洲综合av网| 蜜臀va亚洲va欧美va天堂| 欧美精品日韩一区| 欧美最新大片在线看| 日韩国产精品久久久| 国产拍揄自揄精品视频麻豆| 欧美性三三影院| 日本电影亚洲天堂一区| 9久草视频在线视频精品| 久久99精品久久久久久| 日韩极品在线观看| 免费看欧美美女黄的网站| 日本不卡视频在线观看| 麻豆国产一区二区| 精品一区二区三区在线播放视频| 日韩中文字幕av电影| 免费在线视频一区| 国产制服丝袜一区| 99精品1区2区| 欧美在线不卡视频| 日韩欧美成人一区二区| 欧美精品一区二区三区一线天视频 | 精品美女被调教视频大全网站| 91黄色在线观看| 欧美精品久久久久久久久老牛影院| 欧洲视频一区二区| 精品国产百合女同互慰| 国产精品国模大尺度视频| 17c精品麻豆一区二区免费| 亚洲一区二区在线免费看| 亚洲一区二区在线视频| 欧美激情中文不卡| 亚洲精品日韩综合观看成人91| 国产夫妻精品视频| 日韩欧美色电影| 亚洲国产欧美另类丝袜| 成人aa视频在线观看| 中文字幕不卡一区| 久久激五月天综合精品| 欧美日本在线一区| 午夜精品在线视频一区| 91高清视频在线| 69成人精品免费视频| 91丝袜呻吟高潮美腿白嫩在线观看| 国产成人av电影免费在线观看| 成人a区在线观看| 色婷婷久久一区二区三区麻豆| 欧美一区二区高清| 欧美人伦禁忌dvd放荡欲情| 国产婷婷色一区二区三区四区| 日韩三级电影网址| 亚洲另类中文字| 老司机午夜精品| 欧美日韩激情在线|