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