Postgresql

刪除 postgres 數據目錄

  • January 14, 2022

我們最近將數據庫的數據目錄移動到了新硬碟,因為舊硬碟已滿。

我需要清理一些空間才能安裝一些東西,所以我刪除了舊的數據目錄。

現在 postgres 不再啟動了,大概是因為我刪除了postgresql.config

沒有登錄/var/log/postgres/...

我們複製到新硬碟的數據目錄不包含 postgresql.conf,但我不知道為什麼。

即使文件夾是 21GB,刪除舊數據目錄也沒有釋放任何空間,所以我不能initdb用來創建新配置並將其指向新數據目錄,因為磁碟已滿。

有什麼辦法可以讓系統恢復並執行?如果這很重要,我們正在使用 postgres 12。

如果文件不存在,Postgres 確實會拒絕啟動postgresql.conf,儘管我也不確定為什麼您的數據目錄不包含一個。你確定不是不小心刪了?

無論如何,您的 Postgres 包應該帶有範例配置文件,包括postgresql.conf.sample. 如果您使用預設選項從原始碼建構它,您可以在/usr/local/pgsql/share目錄中找到它。Arch Linux 包管理器安裝將這些“與架構無關的支持文件”放在/usr/share/postgresql目錄中(這是pg_config實用程序所稱的)。

您可以通過使用該選項查詢pg_config實用程序來查看特定安裝的配置位置。--sharedir伺服器不需要執行,我暫時重命名了我自己的postgresql.conf文件,看看我是否仍然可以查詢pg_config,我可以,所以我不知道這是否對你來說是一個可行的選擇,不幸的是,對此感到抱歉。

但是,要真正能夠創建配置文件並初始化 postmaster 守護程序,您是否嘗試過執行lsof +L1 | grep deleted以查看是否有任何活動程序仍然持有對舊數據目錄的引用?當取消連結 inode(即刪除文件/文件夾)實際上並沒有釋放相應的空間時,似乎 總是問題。

引用自:https://serverfault.com/questions/1036127