
PostgreSQL サーバーを 9.3 から 9.5 にアップグレードしました。すべてのマシンに 9.3 クライアント パッケージがインストールされていますが、pg_dump
上位互換性がないため動作しなくなりました。
当然、クライアント ソフトウェアをアップグレードする必要がありますが、どのバージョンにアップグレードすればよいのでしょうか。当初は、将来サーバーを再度アップグレードするときに同じことをしなくて済むように、9.* シリーズの最新リリースである 9.6 にアップグレードすべきだと考えていました。しかし、そうであれば、10 または 11 にアップグレードしない理由はありません。このようにメジャー バージョンを混在させることに何かデメリットはありますか。10 および 11 クライアントは安定していると考えられますか。
答え1
私のアドバイスは、サーバーと同じバージョンで互換性を保つためにクライアントをアップグレードすることです (pg_dump v9.5.x は 9.5.x postgres サーバーで動作します)。バージョン 10 を使用してバージョン 9.5.x で pg_dump を実行することもできますが、毎日それを実行すると発生する可能性のあるバグに対処する準備が必要です。
表面的には、pg_dump コマンドに発生した変更は新しいコマンド引数 (以下に示す) であったにもかかわらず、postgresql サーバーの将来のバージョンから古いバージョンまでのクライアントを使用したバックアップのさまざまな組み合わせに対するテストが厳密であるとは思えません。
- 9.6では、
--strict-names argument
- 10
--no-blobs
--no-publications
--no-subscriptions
--no-sync
議論を紹介した
バックアップは必ずしもサーバー上でローカルに実行する必要はないため、この目的のために常に別のマシンを用意することができます(リモートでバックアップを実行するため)。
オペレーティングシステムとパッケージマネージャによっては、pg_dumpの新しいバージョンがすでにサーバー上に存在している可能性があります。 /usr/lib/postgresql/your_server_version_here/bin/次のようにして、新しいバージョンへのシンボリックリンクをいつでも作成できます (Debian システムを想定)。
sudo ln -s --force /usr/lib/postgresql/9.5/bin/pg_dump /usr/bin/pg_dump