Postgresql

PostgreSQL 數據庫集群升級後刪除舊文件的推薦步驟

  • March 4, 2019

我(成功)按照 PostgreSQL 手冊第18.6.1 節中的升級程序將 PostgreSQL 數據庫集群從 10.7 升級到 11.2(執行 Fedora 29)。我想刪除舊表空間(其中一些是使用者定義的表空間)和其他遺留文件,以從舊集群中回收不需要的空間。

我考慮過兩種方法:

  1. 連接到舊的數據庫集群postgres並針對 pg_catalog 系統表執行查詢到 DROP 表、表空間、數據庫等。
  2. 執行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”選項時,後者才是正確的。

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