In-place Postgres major version upgrades

コマンドラインユーティリティ bdr_pg_upgradeを使用して、PGDノードをPostgresの新しいメジャーバージョンにアップグレードできます。

bdr_pg_upgradeは内部的に標準の pg_upgrade を使用します

スムーズなアップグレードを保証するPGD固有のロジックを使用。

用語

この用語は、アップグレードプロセスと関連するコンポーネントを説明するときに使用されます。

古いクラスター アップグレードする既存のPostgresクラスターノード、データの移行元。

新しいクラスター データの移行先の新しいPostgresクラスター。このクラスターノードは、古いクラスターより1つ前のメジャーバージョンである必要があります。

注意事項

両方のクラスターが pg_upgrade のすべての要件を満たす必要があるという事実を含め、標準のPostgresメジャーバージョンアップグレードの予防措置が適用されます。

さらに、他のツールがレプリケーションスロットとレプリケーションオリジンを使用している場合は、 bdr_pg_upgradeを使用しないでください。アップグレード後に復元されるのは、PGDスロットとオリジンのみです。

bdr_pg_upgradeのいくつかの前提条件を満たす必要があります。

  • 古いクラスターを使用しているアプリケーションを切断します。たとえば、クラスター内の別のノードにリダイレクトできます。

  • 両方のクラスターのピア認証を構成します。 bdr_pg_upgradeはピア認証を必要とします。

  • 両方のクラスターのPGDバージョンはまったく同じであり、バージョン4.1.0以降である必要があります。

  • 新しいクラスターはシャットダウン状態である必要があります。

  • 新しいクラスターにPGDパッケージをインストールする必要があります。

  • 新しいクラスターは、古いクラスター構成と一致するように、必要に応じて既に初期化および構成されている必要があります。

  • 新しいクラスターにデータベース、テーブル、およびその他のオブジェクトが存在しないでください。

bdr_pg_upgradeを実行する前に古いクラスターを起動することもお勧めします。 CLIは、古いクラスターがシャットダウンされている場合、起動します。

使用法

Postgresの新しいメジャーバージョンにアップグレードするには、最初に新しいバージョンをインストールする必要があります。

bdr_pg_upgradeコマンドライン

bdr_pg_upgradeは、すべてのパラメーターをpg_upgradeに渡します。したがって、

pg_upgrade でサポートされているパラメーターを指定できます。

概要

bdr_pg_upgrade [OPTION] ...

オプション

pg_upgradeのオプションに加えて、次のパラメーターをbdr_pg_upgradeに渡すことができます。

必須パラメーター

これらのパラメーターは、コマンドラインで指定するか、 --database パラメーターを除くすべての場合、同等の環境変数で指定します。それらはbdr_pg_upgradeによって使用されます。

  • -b, --old-bindir —古いクラスターbinディレクトリ。

  • -B, --new-bindir —新しいクラスターbinディレクトリ。

  • -d, --old-datadir —古いクラスターデータディレクトリ。

  • -D, --new-datadir —新しいクラスターデータディレクトリ。

  • --database — PGDデータベース名。

オプションパラメーター

これらのパラメーターはオプションであり、bdr_pg_upgradeによって使用されます。

  • -p, --old-port —古いクラスターのポート番号。

  • -s, --socketdir —アップグレード中にpostmasterソケットに使用するディレクトリ。

  • --check —チェックのみを実行し、クラスターを変更しないことを指定します。

その他のパラメーター

上記のいずれでもない他のパラメーターはpg_upgradeに渡されます。 pg_upgradeは次のパラメーターを受け入れます。

  • -j, --jobs —使用する同時プロセスまたはスレッドの数。

  • -k, --link —ファイルを新しいクラスターにコピーする代わりに、ハードリンクを使用します。

  • -o, --old-options —古いpostgresコマンドに渡すオプション。複数の呼び出しが追加されます。

  • -O, --new-options —新しいpostgresコマンドに渡すオプション。複数の呼び出しが追加されます。

  • -N, --no-sync —アップグレードされたクラスター内のすべてのファイルがディスクに書き込まれるのを待たないでください。

  • -P, --new-port —新しいクラスターポート番号。

  • -r, --retain —正常に完了した後でも、 SQLファイルとログファイルを保持します。

  • -U, --username —クラスターのインストールユーザー名。

  • --clone —効率的なファイルの複製を使用します。

環境変数

コマンドラインパラメーターの代わりに次の環境変数を使用できます。

  • PGBINOLD —古いクラスターbinディレクトリ。

  • PGBINNEW —新しいクラスターbinディレクトリ。

  • PGDATAOLD —古いクラスターデータディレクトリ。

  • PGDATANEW —新しいクラスターデータディレクトリ。

  • PGPORTOLD —古いクラスターのポート番号。

  • PGSOCKETDIR —アップグレード中にpostmasterソケットに使用するディレクトリ。

例

次のシナリオが与えられたとします。

  • 古いクラスターbinディレクトリは/usr/lib/postgresql/13/bin です。

  • 新しいクラスターbinディレクトリは/usr/lib/postgresql/14/bin です。

・旧クラスタデータディレクトリは/var/lib/postgresql/13/main です。

  • 新しいクラスタデータディレクトリは/var/lib/postgresql/14/main です。

・ データベース名はbdrdb です。

次のコマンドを使用して、クラスターをアップグレードできます。

bdr_pg_upgrade \
- -old-bindir /usr/lib/postgresql/13/bin \
- -new-bindir /usr/lib/postgresql/14/bin \
- -old-datadir /var/lib/postgresql/13/main \
- -new-datadir /var/lib/postgresql/14/main \
- -database bdrdb

実行された手順

これらの手順は、 bdr_pg_upgradeの実行時に実行されます。

注釈

--check がbdr_pg_upgradeへの引数として指定されている場合、CLIはデータベースを変更する手順をスキップします。

PGD Postgresチェック

Steps

--check supplied

Collecting pre-upgrade new cluster control data

run

Checking new cluster state is shutdown

run

Checking PGD versions

run

Starting old cluster (if shutdown)

skip

Connecting to old cluster

skip

Checking if bdr schema exists

skip

Turning DDL replication off

skip

Terminating connections to database.

skip

Disabling connections to database

skip

Waiting for all slots to be flushed

skip

Disconnecting from old cluster

skip

Stopping old cluster

skip

Starting old cluster with PGD disabled

skip

Connecting to old cluster

skip

Collecting replication origins

skip

Collecting replication slots

skip

Disconnecting from old cluster

skip

Stopping old cluster

skip

pg_upgradeの手順

標準のpg_upgradeステップが実行されます。

注釈

提供されている場合、 --check はpg_upgradeに渡されます。

PGDアップグレード後の手順

Steps

--check supplied

Collecting old cluster control data

skip

Collecting new cluster control data

skip

Advancing LSN of new cluster

skip

Starting new cluster with PGD disabled

skip

Connecting to new cluster

skip

Creating replication origin, repeated for each origin

skip

Advancing replication origin, repeated for each origin

skip

Creating replication slot, repeated for each slot

skip

Stopping new cluster

skip