Postgresql

我們的應用伺服器在連接到帶有 9.6 客戶端的 Postgres 11.4 伺服器時會出現問題嗎?

  • September 25, 2019

我們的應用程序伺服器位於執行在 Amazon Linux 1 上的 EC2 上。Postgres 放棄了對 Amazon Linux 的支持,因此我們依賴 Amazon 提供 postgres 客戶端。

客戶端是 9.6,我們的 Amazon 託管 RDS postgres 伺服器是 11.4。由於我們的自動化,從 Amazon Linux 1 升級到 Amazon Linux 2 需要很長時間。即便如此,Amazon Linux 2 也只有一個 postgres 10 客戶端。

這是一個使用 Rails ORM Active Record 的小應用程序,只進行簡單的查詢和插入。

使用 9.6 作為客戶端是不行的嗎?我想知道有什麼風險。

我不相信 PostgreSQL 放棄了對任何 Linux 發行版的支持。也許您的意思是沒有提供二進制安裝包。

使用 9.6 客戶端沒有問題,因為 9.6 是受支持的版本。您將無法使用 scram-sha-256 身份驗證等新功能,但我想您可以不用它。

從原始碼建構 PostgreSQL 將是另一種選擇。

好吧,完整的答案有點複雜。一般規則是任何客戶端版本都可以與任何伺服器版本一起使用,如果兩者都使用相同的主要版本的libpq通信庫(和協議)。

所以:

  1. psql 命令行客戶端 9.6(libpq 版本 5.8)應該與伺服器 11.4 正常工作(甚至 Postgres 12 使用 libpq 5.12)。
  2. 基於 libpq.so.5 客戶端庫的其他工具也應該可以正常工作。
  3. 但是 pg_dump 工具將拒絕與更新的主要伺服器版本一起使用(9.6 將與任何 9.x 一起使用,但不適用於 10.x 及更高版本)。此行為是有意的,以防止創建不完整或無效的數據庫備份。
  4. 對於任何其他工具,不是基於 libpq.so 庫,而是例如。在本地 JDBC 驅動程序上,您需要檢查它們實現的通信協議的確切版本。

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