2012-01-10 161 views
28

當我加載了Postgres的服務器(v9.0.1),我收到了恐慌,防止它從起點:PostgreSQL的錯誤驚慌:無法找到一個有效的檢查點記錄

驚慌:無法找到有效的檢查點記錄

我該如何解決這個問題?

+0

請不要在問題本身中發佈解決方案。回答自己的問題並不氣餒,但您應該將解決方案作爲答案發布。我這次編輯了這個問題的解決方案。隨意發佈它作爲您方便的答案。 – 2012-01-10 06:53:12

+0

我真的很好奇安娜編輯它之前的答案是什麼:-) – filiprem 2012-01-10 09:49:41

+0

如果這是在從屬/讀取服務器上,並且在複製基礎備份後啓動,請確保您有標籤文件是在本地數據文件夾中創建基礎備份時創建的。 – 2015-11-17 06:09:32

回答

55

它正在查找事務日誌中可能不存在或已損壞的檢查點記錄。你能確定這是否是通過運行情況:

pg_resetxlog DATADIR 

如果事務日誌已損壞,你會看到這樣的消息:

數據庫服務器沒有乾淨地關閉。重置 事務日誌可能會導致數據丟失。無論如何,如果您想繼續使用 ,請使用-f強制重置。

然後,您可以按照指示,並-f運行強制更新:

pg_resetxlog -f DATADIR 

這應該重置事務日誌,但是作爲PostgreSQL documentation on pg_resetxlog解釋它可以讓你的數據庫處於不確定狀態:

如果pg_resetxlog抱怨說它無法判斷用於pg_control的有效數據,你可以迫使它通過指定-f(力)仍要繼續小號巫婆。在這種情況下,可能的值將被替換爲缺失的數據。大多數字段都可以匹配,但下一個OID,下一個事務ID和時期,下一個多事務ID和偏移以及WAL起始地址字段可能需要手動幫助。這些字段可以使用下面討論的開關進行設置。如果您無法爲所有這些字段確定正確的值,則-f仍可以使用,但恢復的數據庫必須比平時更加​​懷疑:立即轉儲和重新加載是必不可少的。在轉儲之前,不要在數據庫中執行任何數據修改操作,因爲任何此類操作都可能導致惡化。

2

你做連續存檔嗎?如果您當時正在備份,則可能會發現刪除backup_label更爲謹慎。 pg_resetxlog是一件很嚴重的事情。

1

就像日誌所說:無法找到有效的檢查點記錄.Postgres無法在$ PGDATA/pg_xlog /目錄下找到正確的WAL。 嘗試使用在pg_resetxlog

10

我運行9.1.7和我發現跑成功如下:

/usr/lib/postgresql/9.1/bin/pg_resetxlog -f /var/lib/postgresql/9.1/main 

你的最後一個參數的pg_resetxlog命令應該是一個Postgres的存儲您的數據庫中的數據在磁盤上的位置。

6

As indicated here pg_resetxlog不應該運行。引用這個的答案是不好的建議。假設錯誤發生在複製/複製實例的環境中,該鏈接提供了一種更簡潔的方式來執行復制/複製pg_basebackup

相關問題