Preparing your environment#

物理ストリーミングレプリケーションPSRからPostgres DistributedPGDへの移行を開始する前に、ノードの主要なロールを特定し、ターゲットトポロジを確立する必要があります。これにより、環境が移行の一時的なオーバーヘッドを処理でき、クラスター移行の明確なパスを提供できます。

ソースノードの選択#

既存のクラスターからソースノードを選択して、PGDクラスターの初期データとその後の更新を提供する必要があります。論理レプリケーションはスタンバイノードからカスケードできないため、現在のプライマリノードのみが実行可能なソースになります。

次のことを検討します。

  • リソースオーバーヘッド 移行中に、ソースノードは少なくとも2つのPGDノードに追加の論理デコードを実行する必要があり、追加のCPU容量が必要です。

  • ストレージ ソースノードは、レプリカの同期を保つために追加のWALデータを保持する必要があり、標準操作よりも多くのディスク領域が必要です。

  • 最適化 現在のプライマリの電力が不足している場合は、移行を開始する前に、より有利なノードへのスイッチオーバープロモーションを検討します。

  • フェールオーバー処理 移行中にプライマリノードに障害が発生した場合、新しいプライマリをソースとして使用してプロセスを中止および再起動する必要があります。

シードノードの選択#

シードノードは、PGDクラスターを形成するグループから選択された新しいノードです。このノードは、移行中に一意の移行的なロールを提供します。

  1. ソースノードからデータベースの完全なコピーを受信します。

  2. インプレースメジャーバージョンのアップグレードを実行します。

  3. 最終的なPGDクラスターを初期化します。

PGDクラスタートポロジの計画#

事前にターゲットトポロジを確立します。続行する前に、場所、ホスト名、PGDノード名、および接続文字列DSNを定義します。このガイドでは、シードノード最初のノードと1つの追加ノードの2ノードPGDスタートを前提としています。さらにノードを追加するには、2番目のノードと同じプロセスに従います。

次の表を使用して、クラスターに必要な環境変数をマップし、すべての構成スクリプト間の一貫性を保証します。

Variable

Description

Example

${SEED_NODE_PGD_NAME}

シードノードに割り当てられたPGD固有の名前。

node-1

${SEED_NODE_DSN}

シードノードに到達するための接続文字列。

host=node-1 port=5444 dbname=pgddb user=postgres

${ADD_NODE_PGD_NAME}

2番目のノードのPGD固有の名前。

node-2

${ADD_NODE_DSN}

追加ノードに到達するための接続文字列。

host=node-2 port=5432 dbname=pgddb user=postgres

${PGD_CLUSTER_NAME}

すべてのノードを含むPGDノードグループの名前。

pgd_cluster_main

コマンド環境設定#

移行手順では、各コマンドに使用するノードを指定します。

移行コマンドが正しく実行されるように保証には、環境が次の要件を満たしていることを確認します。

  • シェル権限 指示でsu を使用することが明示的に指定されていない限り、すべてのコマンドをroot として実行します。

  • 環境変数 ${PGDATA} がPostgresデータディレクトリたとえば、EPAS 14の/var/lib/edb/as14/data に設定されていることを確認します。 ${PGPORT} の設定も必要になる場合があります。

  • ターゲットデータベース psql を実行する前に${PGDATABASE} を設定することにより、移行する特定のデータベースデフォルトのpostgres またはedb データベースではないに接続します。

次のステップ Transferring data to the seed node 。