In-place Postgres Major Version Upgrades¶
コマンドラインユーティリティ bdr_pg_upgrade を使用して、
BDRノードをPostgresの新しいメジャーバージョンにアップグレードできます。
bdr_pg_upgrade は、
BDR固有のロジックで標準の bdr_pg_upgradeコマンドライン を内部的に使用して、スムーズなアップグレードを保証します。
用語¶
このドキュメントでは、アップグレード プロセスと関連するコンポーネントを説明するために、さまざまな用語が使用されています。
old cluster* - アップグレードする既存のPostgresクラスターノード。
new cluster* - データの移行先の新しいPostgresクラスター。このクラスターノードは、古いクラスターよりも1つ前のメジャーバージョンである必要があります。
注意事項¶
bdr_pg_upgradeコマンドライン のすべての要件を両方のクラスターが満たす必要があるという事実を含め、標準のPostgresメジャーバージョンアップグレードの予防措置が適用されます。
さらに、レプリケーションスロットとレプリケーションオリジンを使用する他のツールがある場合は、
bdr_pg_upgrade
を使用しないでください。アップグレード後にBDRスロットとオリジンのみが復元されます。
bdr_pg_upgrade には、満たす必要があるいくつかの前提条件があります。
古いクラスターを使用しているアプリケーションは切断されました。たとえば、クラスター内の別のノードにリダイレクトできます
両方のクラスターにピア認証が構成されています。
bdr_pg_upgradeはピア認証が必要です両方のクラスターのBDRバージョンは完全に同じであり、バージョン4.1.0以上である必要があります
新しいクラスターはシャットダウン状態である必要があります
BDRパッケージを新しいクラスターにインストールする必要があります
新しいクラスターは、古いクラスター構成と一致するように必要に応じて既に初期化および構成されている必要があります
データベース、テーブル、およびその他のオブジェクトが新しいクラスターに存在していてはなりません
また、シャットダウンするとCLIが古いクラスターを起動するため、
bdr_pg_upgrade
を実行する前に古いクラスターを起動することをお勧めします。
使用法¶
Postgresの新しいメジャーバージョンにアップグレードするには、最初に新しいバージョンをインストールする必要があります。
bdr_pg_upgradeコマンドライン¶
bdr_pg_upgrade はすべてのパラメーターをpg_upgrade
に渡します。したがって、 bdr_pg_upgradeコマンドライン
でサポートされているパラメーターを指定できます。
概要¶
bdr_pg_upgrade [OPTION] ...
オプション¶
pg_upgrade
のオプションに加えて、次のパラメーターをbdr_pg_upgrade
に渡すことができます。
-b, --old-bindir- 古いクラスターbinディレクトリ(必須)-B, --new-bindir- 新しいクラスターbinディレクトリ(必須)-d, --old-datadir- 古いクラスタデータディレクトリ(必須)-D, --new-datadir-REQUIRED新しいクラスタデータディレクトリ(必須)
・ --database ・BDRデータベース名(必須)
-p, --old-port- 古いクラスタポート番号-s, --socketdir- アップグレード中にpostmasterソケットに使用するディレクトリ--check-チェックのみを実行し、クラスターを変更しないでください
環境変数¶
コマンドラインパラメーターの代わりに環境変数を使用できます。
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 の実行時に実行される手順。
注釈
bdr_pg_upgrade への引数として`--check` が指定されている場合、CLIはデータベースを変更するステップを1スキップします。
BDR Postgresチェック¶
Steps |
--check supplied |
|---|---|
Collecting pre-upgrade new cluster control data |
run |
Checking new cluster state is shutdown |
run |
Checking BDR 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 BDR 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に渡されます
BDRのアップグレード後の手順¶
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 BDR 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 |