一、介紹
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的宜昌網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!作為pg_rewind報錯章節(jié)補(bǔ)充一個用例,說明其用法。
二、實(shí)例
1、history文件
--新主
$ cat 00000004.history
1 0/140000C8 no recovery target specified
2 0/19000060 no recovery target specified
3 0/1F000090 no recovery target specified
--老主
$ cat 00000003.history
1 0/140000C8 no recovery target specified
2 0/19000060 no recovery target specified
2、查找分叉點(diǎn)
說明:findCommonAncestorTimeline:
? 1)比較sourceHistory[0]、targetHistory[0]的時間線和begin的值,可以得出兩者相等,則轉(zhuǎn)到第2個條目的比較
? 2)比較sourceHistory[1]、targetHistory[1]的時間線和begin的值,可以得出兩者相等,則轉(zhuǎn)到第3個條目的比較
? 3)比較sourceHistory[2]、targetHistory[2]的時間線和begin的值,可以得出兩者相等,此時比較結(jié)束
? 4)取第3個條目進(jìn)行返回:MinXLogRecPtr(sourceHistory[i].end, targetHistory[i].end),此時返回的是sourceHistory[i].end的值作為分叉點(diǎn),即 0/1F000090
3、此時ControlFile_target.checkPoint < divergerec && target的chkptendrec!=divergerec,所以可以進(jìn)行pg_rewind
4、findLastCheckpoint查找分叉點(diǎn)divergerec之前最近的checkpoint作為rewind起點(diǎn)。
? 1)首先需要定位到分叉點(diǎn)divergerec開始的記錄,然后根據(jù)該記錄的xl_prev指針定位前一個wal記錄
? 2)判斷第1)步得到的wal記錄是否是checkpoint,如果不是則重新返回到第1),直到找到checkpoint點(diǎn)
? 3)這里就有個問題,如果得到的分叉點(diǎn)正好是老主結(jié)束位置,即本例:1F000090為分叉點(diǎn),實(shí)際上是老主和新主沒有發(fā)生數(shù)據(jù)分叉,可以認(rèn)為是沒有作為備沒有接收完新主數(shù)據(jù)呢
? 4)target從1F000090這個位置開始獲取prev指針向前找checkpoint時,因?yàn)檫@個位置后都是0了,所以不能繼續(xù)向下遍歷找了,報錯:could not find previous WAL record at %X/%X
三、小結(jié)
這里pg_rewind執(zhí)行時,判斷不出來沒有分叉的情景,即本文的場景。此時執(zhí)行pg_rewind會報錯,讓用戶還以為WAL文件由損壞導(dǎo)致執(zhí)行pg_rewind失敗。這個工具如果能夠?qū)⑦@種場景識別出來,報不需要rewind是不是更好?
四、pg_rewind原理及報錯流程分析參考
https://blog.51cto.com/yanzongshuai/2368285
https://blog.51cto.com/yanzongshuai/2334303
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。