39. 軟體升級¶
由於 PostGIS 駐留在 PostgreSQL 中,每個 PostGIS 安裝實際上包含兩個版本的軟體:PostgreSQL 版本和 PostGIS 版本。一般而言,每個 PostGIS 版本理論上可以在多個 PostgreSQL 版本中執行,反之亦然。
實際上,可用的確切版本組合將由建置 PostgreSQL 發行版的封裝人員決定。大多數 Linux 套件為每個 PostgreSQL 版本發行版包含幾個 PostGIS 版本,允許根據您的偏好,獨立或同時升級各個部分。
升級可以從升級每個組件的角度來考量。
39.1. 升級 PostgreSQL¶
PostgreSQL 升級有兩種情況
當軟體版本在「修補程式」層級增加時,為「小升級」。例如,從 8.4.3 到 8.4.4,或從 9.0.1 到 9.0.3。增加一個以上的修補程式版本也沒問題。小升級修復錯誤,但不會新增任何新功能或變更行為。
當「主要」或「次要」版本增加時,為「大升級」。例如,從 8.4.5 到 9.0.0,或從 9.0.5 到 9.1.1。大升級會新增新功能並變更行為。
39.1.1. PostgreSQL 小升級¶
對於「小升級」,不需要特殊程序。只需安裝新軟體,然後重新啟動伺服器即可。
39.1.2. PostgreSQL 大升級¶
對於「大升級」,有兩種方式可以執行升級。
39.1.2.1. 傾印/還原¶
傾印和還原涉及將所有資料轉換為傾印時的平台中性格式(文字表示),並在還原時轉換回原生表示,因此可能很耗時且需要大量 CPU。但是,如果您要遷移到新的架構或作業系統,這是必要的程序。這也是經過時間考驗且廣為人知的升級路徑,因此如果您的資料庫不是太大,沒有理由不堅持使用它。
從舊資料庫傾印您的資料
pg_dumpall
。安裝新版本的 PostgreSQL 以及您在舊資料庫中使用的相同版本 PostGIS。您需要符合 PostGIS 版本,以便傾印檔案函數定義參考預期的 PostGIS 程式庫版本。
使用來自新軟體的
initdb
程式初始化新的資料區域。在新資料區域上啟動新的伺服器。
使用
pg_restore
還原傾印檔案。
39.1.2.2. pg_upgrade¶
pg_upgrade 公用程式允許升級 PostgreSQL 資料目錄,而無需傾印/還原步驟。該公用程式無法處理資料檔案本身的變更,但可以處理 PostgreSQL 主要升級中更常見且頻繁的系統資料表變更。
注意
執行升級過程的完整說明位於 PostgreSQL 網站的 pg_upgrade 網頁中。
pg_upgrade 程式預期可以存取其正在使用的兩個 PostgreSQL 版本,舊版本和新版本,因此您必須同時安裝這兩個版本。
安裝您將使用的新版本 PostgreSQL。
將您在舊 PostgreSQL 中使用的相同版本 PostGIS 安裝到新的 PostgreSQL 中。
使用新副本的
initdb
初始化新的 PostgreSQL 資料區域。確保舊的和新的 PostgreSQL 伺服器都已關閉。
執行 pg_upgrade,確保使用來自新軟體安裝的二進位檔。
pg_upgrade --old-datadir "/var/lib/postgres/12/data" --new-datadir "/var/lib/postgres/13/data" --old-bindir "/usr/pgsql/12/bin" --new-bindir "/usr/pgsql/13/bin"
如果 pg_upgrade 產生任何
.sql
檔案,請立即執行它們。啟動新的伺服器。
39.2. 升級 PostGIS¶
PostGIS 通過 EXTENSION
機制處理次要升級和升級。如果您使用 CREATE EXTENSION postgis
啟用了資料庫的空間功能,您可以使用相同的功能來更新您的資料庫。
首先,安裝新的軟體,使其可供資料庫使用。
然後,執行 SQL 以升級您的 PostGIS 擴充功能。
-- If you are upgrading from PostGIS 2.5 or later
-- and want the latest installed version
SELECT postgis_extensions_upgrade();
-- If you are upgrading from an earlier version
-- you have to specifically turn on the version you want
ALTER EXTENSION postgis UPDATE TO '2.5.5';