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 |