Postgresql
PostgreSQL 數據庫集群升級後刪除舊文件的推薦步驟
我(成功)按照 PostgreSQL 手冊第18.6.1 節中的升級程序將 PostgreSQL 數據庫集群從 10.7 升級到 11.2(執行 Fedora 29)。我想刪除舊表空間(其中一些是使用者定義的表空間)和其他遺留文件,以從舊集群中回收不需要的空間。
我考慮過兩種方法:
- 連接到舊的數據庫集群
postgres
並針對 pg_catalog 系統表執行查詢到 DROP 表、表空間、數據庫等。- 執行
find -L /path/to/tablespace/root -type d -user postgres -iname “PG_10_*” exec rm -rf {} \;
以刪除表空間位置中的目錄(注意新表空間與舊表空間共享相同的根目錄)在 (1) 或 (2) 之後,我將刪除舊
PGDATA
目錄。是否有首選方法(包括任何未提及的方法)?
請注意,這與以下文章不同:如何在 CentOS 7 上解除安裝舊版本的 Postgres
這裡要非常小心的一件事是您是否完成了 pg_dump+pg_restore 或 pg_upgrade。
聽起來您已經根據連結到的文件部分完成了 pg_dump+pg_restore。
在這種情況下,完全刪除舊數據目錄(包括表空間)應該是安全的,因為您在新集群的數據目錄中擁有數據的完整副本。
如果您使用了不安全的 pg_upgrade *(*您描述的兩種方法都不是),因為某些文件是從舊集群硬連結到新集群的。
編輯:正如評論中所指出的,只有在您為 pg_upgrade 使用了“–link”選項時,後者才是正確的。