使用Debian Wheezy,Postgresql 9.3刪除pg_xlog文件後Postgres將不會啓動
我的數據庫因爲保留WAL文件的分區已滿而關閉。 所以,我刪除了./pg_xlog/
裏面的所有內容,因爲我不知道它們是什麼(是的,對我而言非常愚蠢)。現在Postgres的服務將無法啓動,雖然問題,根據系統日誌:
00000: could not open tablespace directory "pg_tblspc/16386/PG_9.3_201306121": File or directory not found
LOCAL: RelationCacheInitFileRemoveInDir, relcache.c:4895
00000: Primary checkpoint record is invalid
LOCAL: ReadCheckpointRecord, xlog.c:6543
00000: Secondary checkpoint record is invalid
LOCAL: ReadCheckpointRecord, xlog.c:6547
PANIC: XX000: could not locate a valid checkpoint record
LOCAL: StartupXLOG, xlog.c:5228
我不是很確定問題是否是它不能找到合適的pg_tblspc關聯或完全沒有檢查點的WAL文件。數據庫存儲位置的實際路徑是/dados/PG_9.3_201306121
。我能做些什麼來使服務重新開始?
編輯1: 好吧,我已經設法讓事情回到網上。有些數據庫已經損壞。我已經成功地將其中兩個(他們甚至無法連接到他們,但他們強迫服務重新啓動)DROPDB
。我試圖去做另一個腐敗,但錯誤再次與Xlog有關。我試過對它做一個乾淨的恢復,但恢復是不完整的。然後,我創建了一個新的數據庫,並嘗試恢復此數據庫的較舊備份。它也不完整。
現在我不能刪除任何數據庫,也不能創建新的數據庫,我總是得到一個xlog flush request not satisfied
錯誤。我試過運行pg_resetxlog
,但它似乎沒有做任何事情。錯誤顯示的另一件事是cannot write to block 1 of pg_tblspc/16385/PG_9.3_201306121/36596452/11773
,write error may be permanent
。
EDIT2:上述問題的一部分與該11773文件。我將它重命名爲11773.corrupt,現在數據庫允許我再次創建和刪除。
Nonono,不要繼續使用它!將它備份,關閉它,重命名舊的數據目錄,'initdb'一個新的目錄(或者使用你的包的包裝器,然而你首先設置它),然後將你的轉儲恢復到新的PostgreSQL實例。 –