時間:2024-02-04 13:45作者:下載吧人氣:18
大家好,我是只談技術不剪發的 Tony 老師。對于企業而言,將數據庫系統升級到新版本通常可以獲得更好的性能、更多的功能、最新的安全補丁和錯誤修復等。因此,本文就來介紹一下 PostgreSQL 數據庫版本升級的 3 種常用方案。
PostgreSQL 版本號由主要版本和次要版本組成。例如,PostgreSQL 12.4 中的 12 是主要版本,4 是次要版本;PostgreSQL 10.0 之前的版本由 3 個數字組成,例如 9.6.19,其中 9.6 是主要版本,19 是次要版本。
發布次要版本是不會改變內存的存儲格式,因此總是和相同的主要版本兼容。例如,PostgreSQL 12.4 和 PostgreSQL 12.0 以及后續的 PostgreSQL 12.x 兼容。對于這些兼容版本的升級非常簡單,只需要關閉數據庫服務,安裝替換二進制的可執行文件,重新啟動服務即可。
接下來,我們主要討論 PostgreSQL 的跨版本升級問題,例如從 PostgreSQL 12.x 升級到 PostgreSQL 13.y。主要版本的升級可能會修改內部數據的存儲格式,因此需要執行額外的操作。常用的跨版本升級方法和適用場景如下:
升級方法 | 適用場景 | 停機時間 |
---|---|---|
邏輯備份與還原 | 中小型數據庫,例如小于 100 GB 支持跨平臺數據遷移 |
取決于數據庫的大小 |
pg_upgrade 工具 | 大中型數據庫,例如大于 100 GB 本機就地升級 |
幾分鐘 |
邏輯復制 | 大中型數據庫,例如大于 100 GB 跨平臺支持 |
幾秒鐘 |
是的
📝如果使用廠商提供的 PostgreSQL 定制版本,也可能通過他們提供的工具實現版本升級,具體參考相關文檔。
注意事項:升級主要版本通過會導致用戶可見的不兼容性,因此應用程序可能需要進行相應的修改。具體的變化可以參考發行說明,尤其是“Migration”部分的內容;如果跨多個主要版本進行升級,需要閱讀每個中間版本的發行說明。
傳統的跨版本升級方法利用 pg_dump/pg_dumpall 邏輯備份導出數據庫,然后在新版本中通過 pg_restore 進行還原。導出舊版本數據庫時推薦使用新版本的 pg_dump/pg_dumpall 工具,可以利用最新的并行導出和還原功能,同時可以減少數據庫膨脹問題。
邏輯備份與還原非常簡單但速度比較慢,停機時間取決于數據庫的大小,因此適合中小型數據庫的升級。
下面我們介紹這種升級方法的具體操作,假如當前 PostgreSQL 軟件的安裝目錄位于 /usr/local/pgsql,同時數據目錄位于 /usr/local/pgsql/data,我們在同一臺服務器上進行升級。
執行邏輯備份之前停止應用程序,確保沒有數據更新,因為備份開始后的更新不會被導出。如有必要,可以修改 /usr/local/pgsql/data/pg_hba.conf 文件禁止其他人訪問數據庫。
然后備份數據庫:
pg_dumpall > outputfile
盖楼回复X
(您的评论需要经过审核才能显示)
網友評論