Postgresql

如何在 Ubuntu 20.04 LTS 中將 Postgres 次要版本從 14.x 升級到 14.4

  • June 17, 2022

在 2022 年 6 月 16 日,Postgres 發布了一個週期外版本 14.4concurrently ,它修復了使用14.0 到 14.3 版本中的選項創建的索引可能出現的損壞。

不用說,這是一個非常重要的升級,應該盡快完成。

由於我是一名 Web 開發人員,也碰巧為我的副項目執行他自己的伺服器,因此我希望能驗證從 14.2 升級到 14.4 的步驟。

  1. 由於這是一個小升級,因此無需轉儲和重新導入;簡單地“替換二進製文件”就足夠了。這是否意味著我可以預期在停止伺服器後的停機時間少於 5 分鐘?(正好是安裝新版本的時間?)
  2. 我的伺服器已經http://apt.postgresql.org/pub/repos/apt/添加了 apt 儲存庫。在 a 之後sudo apt update,如何確保 asudo apt install postgresql在執行之前安裝 14.4 版本?(我不希望它嘗試升級到 14.3 或其他陳舊版本)
  3. 使用 停止伺服器後,對於此升級是否足夠sudo systemctl stop postgresql簡單?sudo apt install postgresql

問:這是否意味著我可以預計在停止伺服器後少於 5 分鐘的停機時間?(正好是安裝新版本的時間?)

是的,但您不需要停止伺服器。升級過程會做到這一點。

問:在 sudo apt update 之後,如何確保 sudo apt install postgresql 在執行之前安裝 14.4 版本?

apt update獲取最新版本後,可以看到要安裝的候選版本apt policy。例如在升級前的 Ubuntu 20.04 上:

$ apt 策略 postgresql-14
PostgreSQL-14:
已安裝:14.3-1.pgdg20.04+1
候選人:14.4-1.pgdg20.04+1
版本表:
14.4-1.pgdg20.04+1 500
500 http://apt.postgresql.org/pub/repos/apt focus-pgdg/main amd64 包
*** 14.3-1.pgdg20.04+1 100
100 /var/lib/dpkg/狀態

使用 sudo systemctl stop postgresql 停止伺服器後,簡單的 sudo apt install postgresql 是否足以進行此升級?

伺服器包是postgresql-14,不是postgresql,它是一個“元包”。隨便做apt install postgresql一般不會升級postgresql-14

這是將 postgresql-14 升級到時的輸出14.4

$ sudo apt install postgresql-14
閱讀包裹清單...完成
建構依賴樹 
讀取狀態資訊...完成
將升級以下軟體包:
postgresql-14
1 個已升級,0 個新安裝,0 個要移除,10 個未升級。
需要獲得 15.8 MB 的檔案。
此操作後,將使用 12.3 kB 的額外磁碟空間。
獲取:1 http://apt.postgresql.org/pub/repos/apt focus-pgdg/main amd64 postgresql-14 amd64 14.4-1.pgdg20.04+1 [15.8 MB]
在 5 秒內獲取 15.8 MB (2946 kB/s) 
預配置包...
(正在讀取數據庫...目前安裝的 349578 個文件和目錄。)
準備解壓.../postgresql-14_14.4-1.pgdg20.04+1_amd64.deb ...
在 (14.3-1.pgdg20.04+1) 上解壓 postgresql-14 (14.4-1.pgdg20.04+1) ...
設置 postgresql-14 (14.4-1.pgdg20.04+1) ...
處理 postgresql-common (241.pgdg20.04+1) 的觸發器 ...
從已安裝的 myspell/hunspell 軟體包建構 PostgreSQL 字典...
en_us
FR
刪除過時的字典文件:

您可以檢查sudo tail /var/log/postgresql/postgresql-14-main.log伺服器是否已停止並使用新版本重新啟動。輸出通常如下所示:

2022-06-17 11:36:58.794 CEST [26346] 日誌:後台工作人員“邏輯複製啟動器”(PID 26353)以退出程式碼 1 退出
2022-06-17 11:36:58.810 CEST [26348] 日誌:關閉
2022-06-17 11:36:59.364 CEST [26346] 日誌:數據庫系統已關閉
2022-06-17 11:37:02.173 CEST [15840] 日誌:在 x86_64-pc-linux-gnu 上啟動 PostgreSQL 14.4 (Ubuntu 14.4-1.pgdg20.04+1),由 gcc (Ubuntu 9.4.0-1ubuntu1) 編譯~20.04.1) 9.4.0,64 位
2022-06-17 11:37:02.173 CEST [15840] 日誌:偵聽 IPv4 地址“0.0.0.0”,埠 5432
2022-06-17 11:37:02.173 CEST [15840] 日誌:偵聽 IPv6 地址“::”,埠 5432
2022-06-17 11:37:02.210 CEST [15840] 日誌:監聽 Unix 套接字“/var/run/postgresql/.s.PGSQL.5432”
2022-06-17 11:37:02.304 CEST [15842] LOG:數據庫系統於 2022-06-17 11:36:59 CEST 關閉
2022-06-17 11:37:02.367 CEST [15840] 日誌:數據庫系統已準備好接受連接

比較上述輸出中的關閉和啟動時間,在這種情況下,它只有幾秒鐘。

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