刪除 postgres 數據目錄
我們最近將數據庫的數據目錄移動到了新硬碟,因為舊硬碟已滿。
我需要清理一些空間才能安裝一些東西,所以我刪除了舊的數據目錄。
現在 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(即刪除文件/文件夾)實際上並沒有釋放相應的空間時,這似乎 總是問題。