Postgresql

從損壞的驅動器載入 PostgreSQL 數據庫

  • January 20, 2020

我遭受了硬碟驅動器的損壞,但設法恢復了 PostgreSQL 伺服器的文件。我們假設文件本身沒有損壞(尚無法判斷)。我的伺服器在 Windows 10 Pro 上執行。

我可以將數據庫載入到另一台執行相同伺服器版本的 PC 上嗎?我從“Program Files/PostgreSQL/11”開始恢復了整個目錄(所以我有所有的“數據”等)。

如果是這樣,有人可以指導我如何做到這一點,或者指導我使用現有的指導嗎?我真的需要恢復這些數據,遺憾的是,由於上述損壞,我失去了包含我的轉儲文件(備份)的驅動器。

我可以簡單地將“數據”文件夾複製到新版本中,還是比這更複雜一些?

理論上,您的數據庫沒有問題,如果它正在執行。

但要驗證它,首先停止您的數據庫,製作 PostgreSQL 文件夾的物理副本。

之後,使用pg_dump啟動您的數據庫進行普通備份,然後嘗試在新環境中恢復此備份,如果您沒有問題,您的數據庫就可以了。

如果您有一些問題,我將分享一個連結,其中包含腐敗的主要問題以及如何解決它。

https://stackoverflow.com/questions/11030173/repair-corrupt-database-postgresql

但是在開始這個過程之前分析所有的可能性並不存在解決這個問題的唯一方法。

如果您擁有所有二進製文件和完整的 數據目錄,那麼您可以將所有這些複製到新電腦並使用pg_ctl啟動 Postgres 。

請注意,理想情況下,新目標電腦應該執行與舊電腦相同的 Windows 版本和“位數”(即,如果舊電腦是 64 位,則為 64 位 - 現在誰使用 32 位?)。您可能可以使用新的 Windows 版本,但可能無法使用舊版本(例如從 Windows 10 到 Windows 7 或類似的東西)

例如,如果您將所有內容複製到c:\OldPostgres,您的數據目錄將位於c:\OldPostgres\data其中,您可以使用以下命令啟動實例:

c:\OldPostgres\bin\pg_ctl -D c:\OldPostgres\data

如果您的目標電腦已經有一個正在執行的 Postgres 實例,您應該首先編輯c:\OldPostgres\data\postgresql.conf和更改 Postgres 將偵聽的埠以避免衝突。

一旦 Postgres 啟動,您可以例如使用pg_dump該數據庫的正確轉儲來將其導入到真正的目標伺服器。然後您可以刪除“臨時”二進製文件。

引用自:https://dba.stackexchange.com/questions/257668