web-dev-qa-db-ja.com

アプリケーションサーバーで、9.6クライアントを使用するPostgres 11.4サーバーへの接続に問題はありますか?

アプリケーションサーバーは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を使用することは禁止されていませんか?リスクは何なのだろう。

2
Todd

PostgreSQLがLinuxディストリビューションのサポートを終了したとは思いません。おそらく、提供されているバイナリインストールパッケージがないことを意味します。

9.6はサポートされているリリースであるため、9.6クライアントを使用しても問題ありません。 scram-sha-256認証などの新機能を使用することはできませんが、それがなくても問題ないと思います。

ソースからPostgreSQLをビルドすることも別のオプションです。

0
Laurenz Albe

さて、完全な答えはもう少し複雑です。 一般的なルールは、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ドライバーでは、それらが実装する通信プロトコルの正確なバージョンを確認する必要があります。

0
Tomasz Klim