国产丰满乱子伦无码,人妻体内射精一区二区,国产色视频一区二区三区QQ号,亚洲人成在线观看

數(shù)據(jù)恢復(fù)咨詢熱線:400-666-3702??

歡迎訪問(wèn)南京兆柏?cái)?shù)據(jù)恢復(fù)公司,專業(yè)數(shù)據(jù)恢復(fù)15年

兆柏?cái)?shù)據(jù)恢復(fù)公司

?數(shù)據(jù)恢復(fù)資訊

浦東數(shù)據(jù)恢復(fù):PG數(shù)據(jù)庫(kù)的故障修復(fù)

瀏覽量: 次 發(fā)布日期:2023-09-11 09:48:21

上點(diǎn)硬菜:聊聊PG數(shù)據(jù)庫(kù)的故障修復(fù)

  IT運(yùn)維的恐懼主要來(lái)自于對(duì)運(yùn)維對(duì)象的內(nèi)在原理的認(rèn)知不足,而數(shù)據(jù)庫(kù)運(yùn)維的底線在于數(shù)據(jù)的保全。90年代末的時(shí)候,我們對(duì)Oracle數(shù)據(jù)庫(kù)的理解并不深入,而且那時(shí)候企業(yè)在數(shù)據(jù)庫(kù)備份等方面的投入也不足。正是那時(shí)候我第一次遇到了Oracle數(shù)據(jù)庫(kù)服務(wù)器故障的情況。當(dāng)時(shí)客戶的操作系統(tǒng)徹底壞掉了,重裝操作系統(tǒng)并重新安裝了Oracle數(shù)據(jù)庫(kù)軟件,把磁盤陣列上的Oracle掛載起來(lái)后,數(shù)據(jù)庫(kù)實(shí)例無(wú)法啟動(dòng)。在客戶必須盡快恢復(fù)數(shù)據(jù)庫(kù)服務(wù)的需求下,我一邊翻閱手頭僅有的幾本技術(shù)資料,一邊猜測(cè)其原理,一邊嘗試打開(kāi)數(shù)據(jù)庫(kù)。我也打電話咨詢了很多Oracle方面的專家,當(dāng)時(shí)有不少人都認(rèn)為這樣情況,沒(méi)有做數(shù)據(jù)庫(kù)備份的情況下,這套數(shù)據(jù)庫(kù)恢復(fù)無(wú)望。而我則覺(jué)得所有的數(shù)據(jù)庫(kù)文件都沒(méi)有損壞,數(shù)據(jù)庫(kù)是一定能恢復(fù)的。經(jīng)過(guò)近兩天的努力,數(shù)據(jù)庫(kù)終于恢復(fù)了。幸虧當(dāng)時(shí)是周末,只影響了周六幾個(gè)小時(shí)的業(yè)務(wù),也算是萬(wàn)幸了。從那以后,我才感受到理解Oracle數(shù)據(jù)庫(kù)內(nèi)部原理的重要性,開(kāi)始研究起來(lái),這也是我后來(lái)寫作《DBA的思想天空》的一個(gè)起點(diǎn)。隨著對(duì)Oracle內(nèi)部原理的理解的不斷深入,我們對(duì)于Oracle的運(yùn)維也越加自信。很多以前不敢關(guān)閉數(shù)據(jù)庫(kù)進(jìn)行系統(tǒng)維護(hù)的客戶也都明白了數(shù)據(jù)庫(kù)重啟并不是一件高風(fēng)險(xiǎn)的事情。甚至90年代面試DBA的時(shí)候經(jīng)常考的為什么不能shutdown abort關(guān)閉數(shù)據(jù)庫(kù)也成了一道錯(cuò)題。這種運(yùn)維能力的提升也讓運(yùn)維工作變得更科學(xué)起來(lái)了。而Oracle數(shù)據(jù)庫(kù)無(wú)論出現(xiàn)何種問(wèn)題,只要數(shù)據(jù)文件還在,我們總是能有辦法解決其存在的問(wèn)題。剛剛開(kāi)始使用PG數(shù)據(jù)庫(kù)的時(shí)候,我也在考慮,如果PG數(shù)據(jù)庫(kù)也出現(xiàn)了類似的問(wèn)題,比如數(shù)據(jù)庫(kù)處于不一致?tīng)顟B(tài),操作系統(tǒng)故障,丟失某些文件等,我們是不是也能像運(yùn)維Oracle數(shù)據(jù)庫(kù)一樣來(lái)解決這些問(wèn)題呢?今天我就給大家分享一些這樣的干貨。實(shí)際上各種數(shù)據(jù)庫(kù)丟失文件、數(shù)據(jù)文件不一致,存在某些損壞,要解決這些問(wèn)題,實(shí)際上涉及的都是REDO和UNDO的問(wèn)題,解決REDO的不一致問(wèn)題,可以讓數(shù)據(jù)庫(kù)在損失部分?jǐn)?shù)據(jù)(甚至不損失數(shù)據(jù))的情況下強(qiáng)行啟動(dòng),從而減少部分損失。解決UNDO的問(wèn)題,可以確保在丟失部分?jǐn)?shù)據(jù)的一致性的情況下強(qiáng)行打開(kāi)數(shù)據(jù)庫(kù),從而讓數(shù)據(jù)損失減少到最少。無(wú)論是Oracle、DB2還是今天我們討論的PG,通過(guò)重置日志文件(REDO或者WAL)都可以強(qiáng)行打開(kāi)一個(gè)不一致的數(shù)據(jù)庫(kù)。和Oracle一樣,不管PG數(shù)據(jù)庫(kù)出現(xiàn)什么樣的問(wèn)題,只要數(shù)據(jù)文件都還在,修復(fù)數(shù)據(jù)庫(kù)的可能性是很大的。只要找到一個(gè)和本數(shù)據(jù)庫(kù)版本一致的運(yùn)行環(huán)境,后續(xù)一步步的修復(fù)數(shù)據(jù)庫(kù),打開(kāi)數(shù)據(jù)庫(kù)實(shí)例是大概率的。在修復(fù)數(shù)據(jù)庫(kù)的時(shí)候,盡可能使用完全一致的數(shù)據(jù)庫(kù)軟件版本,從而避免一些不必要的麻煩。PG數(shù)據(jù)庫(kù)提供了一個(gè)重置WAL文件的工具pg_resetwal/pg_resetxlog(10以前版本),這個(gè)工具對(duì)于丟失一些PG的文件導(dǎo)致PG數(shù)據(jù)庫(kù)無(wú)法啟動(dòng)可以進(jìn)行強(qiáng)制修復(fù)。大家要注意的是,使用這個(gè)工具修復(fù)數(shù)據(jù)庫(kù)是不得已而為之的做法,不過(guò)這個(gè)工具在一些非專業(yè)運(yùn)維人員手里被當(dāng)成了一個(gè)日常使用的工具,用來(lái)做各種各樣的事情,包括誤刪數(shù)據(jù)恢復(fù)等。這實(shí)際上是十分危險(xiǎn)的,一些常規(guī)性的恢復(fù)操作最好還是用常規(guī)手段來(lái)進(jìn)行,這種操作只是作為沒(méi)辦法情況下的操作手段。使用這種手段修復(fù)的數(shù)據(jù)庫(kù),也有可能因?yàn)樾迯?fù)使用的參數(shù)存在不準(zhǔn)確而導(dǎo)致數(shù)據(jù)庫(kù)能正常啟動(dòng),但是數(shù)據(jù)庫(kù)本身存在問(wèn)題的情況。另外就是不同版本的工具的參數(shù)上可能會(huì)有略微的差異,使用前一定要認(rèn)真閱讀相關(guān)版本的文檔。如果僅僅是數(shù)據(jù)庫(kù)存在一些不一致,或者丟失了部分WAL文件,那么我們只需要通過(guò)這個(gè)工具生成一個(gè)最新的WAL文件就可以強(qiáng)制打開(kāi)數(shù)據(jù)庫(kù)了。我們來(lái)看一個(gè)例子,比如一數(shù)據(jù)庫(kù)實(shí)例突然宕機(jī)了,而且WAL文件丟失了。因?yàn)檫@個(gè)WAL里可能包含了活躍的記錄,因此數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)候會(huì)出現(xiàn)錯(cuò)誤。看下面的例子:然后Postmaster被異常終止。刪除所有的WAL文件,刪掉共享內(nèi)存段。然后重啟數(shù)據(jù)庫(kù)。可以看到,因?yàn)閃AL文件都丟失了此時(shí)數(shù)據(jù)庫(kù)是無(wú)法啟動(dòng)。這種時(shí)候可以通過(guò)pg_resetwal工具去修復(fù)這個(gè)錯(cuò)誤。使用pg_resetwal $PGDATA就可以完成修復(fù),如果數(shù)據(jù)庫(kù)存在不一致情況,需要使用-f參數(shù)強(qiáng)制修復(fù)。可以看到修復(fù)后數(shù)據(jù)庫(kù)啟動(dòng)了。不過(guò)剛才CHECKPOINT之后寫入的一條數(shù)據(jù)丟失了。上面的例子是最簡(jiǎn)單的,我們?cè)賮?lái)看一個(gè)稍微復(fù)雜一些的例子。如果pg_control文件也丟失了,那么除了簡(jiǎn)單的reset wal之外,我們還需要首先恢復(fù)pg_control文件。pg_control文件位于$PGDATA/global目錄下,是PG數(shù)據(jù)庫(kù)中十分重要的記錄各種重要數(shù)據(jù)庫(kù)基本信息的文件,和Oracle的controlfile十分類似。如果這個(gè)文件損壞或者丟失,PG數(shù)據(jù)庫(kù)就無(wú)法打開(kāi)了。今天我們以這個(gè)文件順壞的場(chǎng)景,來(lái)學(xué)習(xí)一下如何使用這個(gè)工具來(lái)修復(fù)PG數(shù)據(jù)庫(kù)。要想用pg_resetwal來(lái)修復(fù)數(shù)據(jù)庫(kù),重修生成丟失或者損壞的pg_control文件,需要確定幾個(gè)參數(shù)。上海數(shù)據(jù)恢復(fù)

揚(yáng)州數(shù)據(jù)恢復(fù)

  1) -l, --next-wal-file=WALFILE,這個(gè)參數(shù)設(shè)置下一個(gè)新的WAL文件的最小值,這個(gè)值可以從$PGDATA/pg_wal目錄下去看最后一個(gè)WAL 文件,這個(gè)文件的id+1就可以了。這個(gè)文件+1,-l 000000010000099B000000352)-x, --next-transaction-id=XID,這個(gè)參數(shù)設(shè)置pg_control中的下一個(gè)XID的值,這個(gè)值可以從pg_xact目錄下的文件中查詢到。最后一個(gè)是0392,那么下一個(gè)XID就是0393,然后乘以 1048576 (0x100000),實(shí)際上后面直接加5個(gè)0就行了。注意,這個(gè)值是16進(jìn)制的。-x 0x0393000003)-m, --multixact-ids=MXID1,MXID2,這個(gè)參數(shù)包含兩個(gè)部分,MXID1和MXID2,都可以從$PGDATA/pg_multixact/offsets目錄下獲得。MXID1的值,首先找到最大值,+1,再乘以 65536 (0x10000,相當(dāng)于后面加4個(gè)0)作為這個(gè)參數(shù)的前半部分。找到最小的值,后面加4個(gè)0,作為MXID2的值。這個(gè)例子中,-m 0x00570000, 0x00080000

  4)-O, --multixact-offset=OFFSET,這個(gè)參數(shù)可以從$PGDATA/pg_multixact/members目錄下獲得。找到最大值,+1,乘以 52352 (0xCC80),這個(gè)需要進(jìn)行計(jì)算,沒(méi)有簡(jiǎn)單的加0的方法。-O 0x00BAED00

  根據(jù)上面所述的參數(shù)的情況,這個(gè)例子要修復(fù)pg_control文件的命令為:pg_resetwal -O 0x00BAED00 -m 0x00570000,0x00080000 -x 0x039300000 -l 000000010000099B00000037 $PGDATA

  準(zhǔn)備好命令后,首先要做幾個(gè)準(zhǔn)備動(dòng)作。如果你的數(shù)據(jù)庫(kù)是異常宕機(jī)的,那么$PGDATA/postmaster.pid文件可能還沒(méi)刪掉,需要手工刪除。然后到$PGDATA/global目錄下,生成一個(gè)空的pg_control文件(touch pg_control)。否則執(zhí)行命令會(huì)報(bào)錯(cuò)。準(zhǔn)備好之后,就可以執(zhí)行命令了。上面的命令執(zhí)行過(guò)程中,所有的參數(shù)都已經(jīng)被校驗(yàn)了,而且是可接受的。不過(guò)因?yàn)樾枰獜?qiáng)制執(zhí)行,所以需要加上-f參數(shù)。執(zhí)行結(jié)束后,就可以嘗試重啟啟動(dòng)數(shù)據(jù)庫(kù)了。數(shù)據(jù)庫(kù)能夠成功啟動(dòng)了。要注意的是,命令執(zhí)行成功,并不一定說(shuō)明pg_control文件就正確修復(fù)了。如果你輸入的參數(shù)有問(wèn)題,那么數(shù)據(jù)庫(kù)還是無(wú)法啟動(dòng)的。如果你的數(shù)據(jù)庫(kù)成功啟動(dòng)了,那么校驗(yàn)一下你所需要的書是否都是正確的。要說(shuō)明的是這個(gè)命令的各種參數(shù)的確定要十分謹(jǐn)慎,一旦錯(cuò)誤,數(shù)據(jù)庫(kù)打開(kāi)后,一些不一致帶來(lái)的問(wèn)題就比較麻煩了。在實(shí)際的生產(chǎn)環(huán)境中做這件事,你一定要首先完整備份書后再操作,否則你沒(méi)有犯錯(cuò)誤的機(jī)會(huì)。實(shí)際上pg_resetwal工具還有很多十分重要的作用,今天時(shí)間有限,我們就不多說(shuō)了,以后找時(shí)間再給大家分享。

相關(guān)推薦

. 達(dá)夢(mèng)數(shù)據(jù)庫(kù)重啟,達(dá)夢(mèng)數(shù)據(jù)庫(kù)重啟操作指南與注意事項(xiàng)

. 數(shù)據(jù)庫(kù)論文參考文獻(xiàn),數(shù)據(jù)庫(kù)論文參考文獻(xiàn)綜述

. 硬盤數(shù)據(jù)恢復(fù)建議書,全方位解析與實(shí)用技巧

. 中毒后硬盤數(shù)據(jù)恢復(fù)價(jià)格,價(jià)格影響因素與預(yù)算建議

. 聯(lián)想硬盤壞了怎么辦,全面解析維修與數(shù)據(jù)恢復(fù)策略

. 六安移動(dòng)硬盤數(shù)據(jù)恢復(fù),專業(yè)技術(shù),守護(hù)您的數(shù)據(jù)安全

. 硬盤數(shù)據(jù)恢復(fù)拆盤,拆盤操作與數(shù)據(jù)恢復(fù)技術(shù)解析

. 常州修移動(dòng)硬盤,數(shù)據(jù)恢復(fù)無(wú)憂

. 深圳數(shù)據(jù)恢復(fù)公司排名,揭秘排名前三的數(shù)據(jù)恢復(fù)公司”

. 希捷硬盤數(shù)據(jù)恢復(fù) 華軍,專業(yè)方法與案例分析

. 怎樣恢復(fù)刪除的硬盤數(shù)據(jù),詳解硬盤刪除數(shù)據(jù)恢復(fù)全攻略

. 硬盤數(shù)據(jù)恢復(fù)圖書,從原理到實(shí)踐的技術(shù)解析

. 沈河區(qū)硬盤數(shù)據(jù)恢復(fù)中心,專業(yè)服務(wù),守護(hù)您的數(shù)據(jù)安全”

. 太原西數(shù)硬盤數(shù)據(jù)恢復(fù),專業(yè)解決方案與高效恢復(fù)策略

. 硬盤數(shù)據(jù)恢復(fù)從哪學(xué),從原理到實(shí)踐的技術(shù)解析

. 硬盤數(shù)據(jù)恢復(fù)一般多長(zhǎng)時(shí)間,影響因素與恢復(fù)時(shí)長(zhǎng)揭秘

. 杭州機(jī)械硬盤數(shù)據(jù)恢復(fù),專業(yè)技術(shù)助力數(shù)據(jù)失而復(fù)得

. 移動(dòng)硬盤數(shù)據(jù)恢復(fù)大概多少錢,價(jià)格區(qū)間與影響因素

. 全免費(fèi)的數(shù)據(jù)恢復(fù)工具,助您輕松找回丟失文件

. 移動(dòng)硬盤數(shù)據(jù)恢復(fù)哪家好,移動(dòng)硬盤數(shù)據(jù)恢復(fù)哪家強(qiáng)?全方位評(píng)測(cè)推薦