2015-10-06 50 views
1

我使用pg_dump備份了一個postgres 9.4數據庫。我將數據庫內容轉儲到Linux /tmp目錄中。不幸的是,當我使用filezilla將轉儲轉移到新服務器時,我不小心刪除了套接字文件/tmp/s.PGSQL.5432。現在我甚至無法重新啓動postgres或運行此服務器。有誰知道在丟失socket文件後如何恢復數據庫?如果postgres套接字被刪除怎麼辦?

+3

聽起來不對。文件系統命名空間中的Unix套接字是在進程啓動過程中用'bind()'系統調用創建的,所以我會檢查你是否意外地也損壞了'/ tmp'的權限,所以服務器無法在運行時創建套接字'postgres'用戶。 –

+1

我不太明白。你的PostgreSQL集羣是否仍在運行(沒有套接字文件),你不能重新啓動它?如果是這樣,你可以用'pg_ctl -m fast stop'命令停止服務器嗎?你可以發佈特定的錯誤消息,你嘗試重新啓動? –

回答

1

kill數據庫服務器強制快速關閉。做不是使用kill -KILL(即)。默認信號SIGTERM就足夠了。

sudo pkill postgres 
0

您可以停止使用pg_ctl數據庫:

pg_ctl stop -m fast -D /path/to/data/directory 

理想的情況下運行此爲您的數據庫使用(在大多數情況下,「Postgres的)相同的用戶。

「-m fast」選項將終止所有打開的連接,然後關閉數據庫。 「pg_ctl stop」的默認行爲是等到所有連接都關閉 - 可能是永遠的。

相關問題