すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:PostgreSQL プライマリ/セカンダリ構成の設定

最終更新日:Dec 31, 2025

PostgreSQL のプライマリ/セカンダリ構成を設定することで、読み書き分離を実装し、読み取りクエリをセカンダリノードにオフロードしてパフォーマンスを向上させることができます。セカンダリノードは、プライマリノードのデータレプリカとしても機能します。プライマリノードに障害が発生した場合、手動でセカンダリノードにフェールオーバーすることができ、システムの高可用性を高めます。

ソリューションのアーキテクチャ

image

仕組み

  1. データの書き込みと先行書き込みログ (WAL) の生成:プライマリノードは書き込みトランザクションを処理し、データの変更を WAL に記録します。

  2. WAL の転送:プライマリノード上の walsender プロセスは、ストリーミングレプリケーションを使用して、WAL をリアルタイムでセカンダリノード上の walreceiver プロセスに転送します。

  3. データ同期:セカンダリノード上の walreceiver プロセスが WAL を受信します。リカバリープロセスが WAL を読み取り、データの変更をセカンダリデータベースに適用することで、プライマリノードと同期します。

  4. 読み取り専用サービス:継続的に同期しながら、セカンダリノードは読み取り専用クエリを処理します。

操作手順

ステップ 1:ECS インスタンスとネットワーク環境の準備

プライマリノードとセカンダリノードとして機能する 2 つの Elastic Compute Service (ECS) インスタンスを作成します。インスタンスの構成は次のとおりです:

  • 仕様:ecs.c7.large (2 vCPU, 4 GiB) 以上。

  • イメージ:Alibaba Cloud Linux 3.2104 LTS 64 ビット、CentOS 8.x 64 ビット、または Ubuntu 22.04 64 ビット。

  • ネットワーク:両方のインスタンスは、ネットワーク遅延を最小限に抑え、データ同期のパフォーマンスを確保するために、同じ Virtual Private Cloud (VPC)、リージョン、およびアベイラビリティゾーンに配置する必要があります。また、インストールパッケージをダウンロードするためにパブリックネットワークアクセスも必要です。

    高可用性は、プライマリ/セカンダリ構成によって実現されます。セカンダリノードは、フェールオーバーのためのデータレプリカとして機能します。
  • セキュリティグループ:両方のインスタンスを同じセキュリティグループに割り当てます。

プライベート IP アドレスの例:

  • プライマリノードのプライベート IP アドレスの例:192.168.1.10

  • セカンダリノードのプライベート IP アドレスの例:192.168.1.20

ステップ 2:PostgreSQL プライマリノードの設定

Alibaba Cloud Linux 3/CentOS 8

以下の手順では、PostgreSQL 18 を例として使用します。
  1. ECS インスタンスにログインします。

    1. ECS コンソール - インスタンス に移動します。上部のナビゲーションバーで、対象のリージョンとリソースグループを選択します。

    2. 対象のインスタンスの詳細ページに移動します。[接続] をクリックし、[ワークベンチ] を選択します。ページ上の指示に従って、ターミナルにログインします。

  2. PostgreSQL 18 をインストールします。YUM リポジトリを設定し、サーバーパッケージをインストールします。

    # OS タイプを確認します。CentOS 8 の場合は、デフォルトの PostgreSQL モジュールを無効にします。
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        if [ "$ID" = "centos" ] && [ "${VERSION_ID%%.*}" = "8" ]; then
            sudo dnf --assumeyes module disable postgresql
        fi
    fi
    # 公式の PostgreSQL YUM リポジトリを追加します。
    sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/postgresql/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # リポジトリの URL を Alibaba Cloud ミラーに置き換えて、ダウンロードを高速化します。
    sudo sed -i "s@https://download.postgresql.org/pub@http://mirrors.cloud.aliyuncs.com/postgresql@g" /etc/yum.repos.d/pgdg-redhat-all.repo
    sudo sed -i "s@\$releasever@8@g" /etc/yum.repos.d/pgdg-redhat-all.repo
    # PostgreSQL 18 サーバーをインストールします。
    sudo dnf install -y postgresql18-server
  3. データベースを初期化します。これにより、データディレクトリ /var/lib/pgsql/18/data/ が作成され、デフォルトの設定ファイルが生成されます。

    sudo /usr/pgsql-18/bin/postgresql-18-setup initdb
  4. /var/lib/pgsql/18/data/postgresql.conf ファイルを編集して、リッスンアドレス、WAL レベル、およびその他のパラメーターを設定します。

    # すべてのネットワークインターフェースからの接続をリッスンします。
    listen_addresses = '*'
    # WAL レベルを replica に設定します。
    wal_level = replica
    # ストリーミングレプリケーション接続の最大数を設定します。この値はセカンダリノードの数以上である必要があります。
    max_wal_senders = 3
    # WAL アーカイブを有効にします。セカンダリノードが長時間オフラインになり、プライマリノードが古い WAL をクリーンアップした場合、セカンダリノードはアーカイブから自動的に回復できます。
    archive_mode = on
    # アーカイブスキームを設定します。この例では、/mnt/server/archivedir/ にアーカイブします。
    archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
  5. サービスを起動し、PostgreSQL ユーザーとレプリケーションスロットを作成します。

    1. PostgreSQL サービスを起動し、起動時に自動起動するように設定します。

      sudo systemctl enable postgresql-18.service
      sudo systemctl start postgresql-18.service
    2. REPLICATION 権限を持つ PostgreSQL ユーザーを作成します。

      sudo -u postgres psql -c "CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD '安全なパスワード';"
    3. 物理レプリケーションスロットを作成します。レプリケーションスロットは、セカンダリが WAL ログを受信する前にプライマリノードがそれらを削除するのを防ぎます。これにより、切断されたセカンダリが再接続後に完全な再クローンを必要とせずに同期を再開できます。

      sudo -u postgres psql -c "SELECT pg_create_physical_replication_slot('secondary_slot');"
  6. セカンダリノードからの接続を許可するように pg_hba.conf ファイルを設定します。/var/lib/pgsql/18/data/pg_hba.conf ファイルの末尾に認証ルールを追加して、セカンダリノードが PostgreSQL ユーザーとして接続できるようにします。

    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    replication     replica_user    192.168.1.20/32         scram-sha-256
    • replica_user:PostgreSQL のユーザー名。

    • 192.168.1.20:セカンダリノードのプライベート IP アドレス。

  7. サービスを再起動して変更を適用します。

    sudo systemctl restart postgresql-18.service

Ubuntu/Debian

このガイドは Ubuntu 22.04 以降、および Debian 11 以降に適用されます。以下の手順では、PostgreSQL 18 を例として使用します。
  1. ECS インスタンスにログインします。

    1. ECS コンソール - インスタンス に移動します。上部のナビゲーションバーで、対象のリージョンとリソースグループを選択します。

    2. 対象のインスタンスの詳細ページに移動します。[接続] をクリックし、[ワークベンチ] を選択します。画面の指示に従ってターミナルにログインします。

  2. PostgreSQL 18 をインストールします。PostgreSQL APT リポジトリを設定し、パッケージをインストールします。

    # 公式の PostgreSQL APT リポジトリを追加し、Alibaba Cloud ミラーを使用します。
    sudo sh -c 'echo "deb [signed-by=/etc/apt/trusted.gpg.d/postgresql.gpg] http://mirrors.cloud.aliyuncs.com/postgresql/repos/apt/ $(lsb_release -sc)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    
    # リポジトリ署名キーをインポートします。
    wget -qO - http://mirrors.cloud.aliyuncs.com/postgresql/repos/apt/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
    
    # パッケージリストを更新してインストールします。
    sudo apt-get update
    sudo apt-get install -y postgresql-18
  3. /etc/postgresql/18/main/postgresql.conf ファイルを編集して、リッスンアドレス、WAL レベル、およびその他のパラメーターを設定します。

    # すべてのネットワークインターフェースからの接続をリッスンします。
    listen_addresses = '*'
    # WAL レベルを replica に設定します。
    wal_level = replica
    # ストリーミングレプリケーション接続の最大数を設定します。この値はセカンダリノードの数以上である必要があります。
    max_wal_senders = 3
    # WAL アーカイブを有効にします。セカンダリノードが長時間オフラインになり、プライマリノードが古い WAL をクリーンアップした場合、セカンダリノードはアーカイブから自動的に回復できます。
    archive_mode = on
    # アーカイブスキームを設定します。この例では、/mnt/server/archivedir/ にアーカイブします。
    archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
  4. サービスを起動し、PostgreSQL ユーザーとレプリケーションスロットを作成します。

    1. PostgreSQL サービスを起動し、起動時に自動起動するように設定します。

      sudo systemctl enable postgresql.service
      sudo systemctl start postgresql.service
    2. REPLICATION 権限を持つ PostgreSQL ユーザーを作成します。

      sudo -u postgres psql -c "CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD '安全なパスワード';"
    3. 物理レプリケーションスロットを作成します。レプリケーションスロットは、セカンダリが WAL ログを受信する前にプライマリノードがそれらを削除するのを防ぎます。これにより、切断されたセカンダリが再接続後に完全な再クローンを必要とせずに同期を再開できます。

      sudo -u postgres psql -c "SELECT pg_create_physical_replication_slot('secondary_slot');"
  5. セカンダリノードからの接続を許可するように pg_hba.conf ファイルを設定します。/etc/postgresql/18/main/pg_hba.conf ファイルの末尾に認証ルールを追加して、セカンダリノードが PostgreSQL ユーザーとして接続できるようにします。

    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    replication     replica_user    192.168.1.20/32         scram-sha-256
    • replica_user:PostgreSQL のユーザー名。

    • 192.168.1.20:セカンダリノードのプライベート IP アドレス。

  6. サービスを再起動して変更を適用します。

    sudo systemctl restart postgresql.service

Alibaba Cloud Linux 2/CentOS 7

以下の手順では、PostgreSQL 15 を例として使用します。
  1. ECS インスタンスにログインします。

    1. ECS コンソール - インスタンス に移動します。上部のナビゲーションバーで、対象のリージョンとリソースグループを選択します。

    2. 対象のインスタンスの詳細ページに移動します。[接続] をクリックし、[ワークベンチ] を選択します。画面の指示に従って、ターミナルにログインします。

  2. PostgreSQL 15 をインストールします。YUM リポジトリを設定し、サーバーパッケージをインストールします。

    # 公式の PostgreSQL YUM リポジトリを追加します。
    sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/postgresql/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # リポジトリの URL を Alibaba Cloud ミラーに置き換えて、ダウンロードを高速化します。
    sudo sed -i "s@https://download.postgresql.org/pub@http://mirrors.cloud.aliyuncs.com/postgresql@g" /etc/yum.repos.d/pgdg-redhat-all.repo
    sudo sed -i "s@\$releasever@7@g" /etc/yum.repos.d/pgdg-redhat-all.repo
    # PostgreSQL 15 サーバーをインストールします。
    sudo yum install -y postgresql15-server
  3. データベースを初期化します。これにより、データディレクトリ /var/lib/pgsql/15/data/ が作成され、デフォルトの設定ファイルが生成されます。

    sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
  4. /var/lib/pgsql/15/data/postgresql.conf ファイルを編集して、リッスンアドレス、WAL レベル、およびその他のパラメーターを設定します。

    # すべてのネットワークインターフェースからの接続をリッスンします。
    listen_addresses = '*'
    # WAL レベルを replica に設定します。
    wal_level = replica
    # ストリーミングレプリケーション接続の最大数を設定します。この値はセカンダリノードの数以上である必要があります。
    max_wal_senders = 3
    # WAL アーカイブを有効にします。セカンダリノードが長時間オフラインになり、プライマリノードが古い WAL をクリーンアップした場合、セカンダリノードはアーカイブから自動的に回復できます。
    archive_mode = on
    # アーカイブスキームを設定します。この例では、/mnt/server/archivedir/ にアーカイブします。
    archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
  5. サービスを起動し、PostgreSQL ユーザーとレプリケーションスロットを作成します。

    1. PostgreSQL サービスを起動し、起動時に自動起動するように設定します。

      sudo systemctl enable postgresql-15.service
      sudo systemctl start postgresql-15.service
    2. REPLICATION 権限を持つ PostgreSQL ユーザーを作成します。

      sudo -u postgres psql -c "CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD '安全なパスワード';"
    3. 物理レプリケーションスロットを作成します。レプリケーションスロットは、セカンダリが WAL ログを受信する前にプライマリノードがそれらを削除するのを防ぎます。これにより、切断されたセカンダリが再接続後に完全な再クローンを必要とせずに同期を再開できます。

      sudo -u postgres psql -c "SELECT pg_create_physical_replication_slot('secondary_slot');"
  6. セカンダリノードからの接続を許可するように pg_hba.conf ファイルを設定します。/var/lib/pgsql/15/data/pg_hba.conf ファイルの末尾に認証ルールを追加して、セカンダリノードが PostgreSQL ユーザーとして接続できるようにします。

    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    replication     replica_user    192.168.1.20/32         scram-sha-256
    • replica_user:PostgreSQL のユーザー名。

    • 192.168.1.20:セカンダリノードのプライベート IP アドレス。

    • scram-sha-256md5 よりも安全なパスワード認証方式。

  7. サービスを再起動して変更を適用します。

    sudo systemctl restart postgresql-15.service

ステップ 3:PostgreSQL セカンダリノードの設定

Alibaba Cloud Linux 3/CentOS 8

  1. PostgreSQL 18 をインストールします。YUM リポジトリを設定し、サーバーパッケージをインストールします。

    # OS タイプを確認します。CentOS 8 の場合は、デフォルトの PostgreSQL モジュールを無効にします。
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        if [ "$ID" = "centos" ] && [ "${VERSION_ID%%.*}" = "8" ]; then
            sudo dnf --assumeyes module disable postgresql
        fi
    fi
    # 公式の PostgreSQL YUM リポジトリを追加します。
    sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/postgresql/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # リポジトリの URL を Alibaba Cloud ミラーに置き換えて、ダウンロードを高速化します。
    sudo sed -i "s@https://download.postgresql.org/pub@http://mirrors.cloud.aliyuncs.com/postgresql@g" /etc/yum.repos.d/pgdg-redhat-all.repo
    sudo sed -i "s@\$releasever@8@g" /etc/yum.repos.d/pgdg-redhat-all.repo
    # PostgreSQL 18 サーバーをインストールします。
    sudo dnf install -y postgresql18-server
  2. postgres ユーザーのホームディレクトリに .pgpass ファイルを作成し、自動認証用のパスワードを保存します。

    1. postgres ユーザーに切り替えます。

      sudo su - postgres
    2. .pgpass ファイルを作成して設定します。

      echo "192.168.1.10:5432:replication:replica_user:安全なパスワード" > ~/.pgpass
      chmod 600 ~/.pgpass
    3. postgres ユーザーセッションを終了します。

      exit
  3. pg_basebackup を使用して、プライマリノードからデータをクローンします。

    重要

    この操作はプライマリノードからすべてのデータをクローンし、ターゲットのデータディレクトリ /var/lib/pgsql/18/data/ を上書きします。このディレクトリが空であることを確認してください。

    # postgres ユーザーとしてベースバックアップを実行します。
    sudo -u postgres pg_basebackup -h 192.168.1.10 -D /var/lib/pgsql/18/data/ -U replica_user -P -v --wal-method=stream
    • -h:プライマリノードの IP アドレス。

    • -D:セカンダリノードのデータディレクトリ。

    • -U:PostgreSQL のユーザー名。

  4. standby.signal ファイルを作成してスタンバイモードを有効にします。この空のファイルは、PostgreSQL にプライマリとしてではなくスタンバイモードで起動するように指示します。

    sudo -u postgres touch /var/lib/pgsql/18/data/standby.signal
  5. プライマリに接続するようにセカンダリを設定します。/var/lib/pgsql/18/data/postgresql.conf ファイルを編集し、次の設定を追加します:

    primary_conninfo にパスワードを含める必要はありません。PostgreSQL は .pgpass ファイルからパスワードを自動的に使用します。
    # ストリーミングレプリケーション用のプライマリノード接続情報。
    # application_name は、この接続を識別するための名前です。
    primary_conninfo = 'host=192.168.1.10 port=5432 user=replica_user application_name=secondary_node1'
    # レプリケーションスロット名を指定します。プライマリノードで作成されたスロットの名前と一致する必要があります。
    primary_slot_name = 'secondary_slot'
    # ホットスタンバイモードを有効にして、同期中に読み取り専用クエリを許可します。
    hot_standby = on
  6. セカンダリノードのサービスを起動します。

    sudo systemctl enable postgresql-18.service
    sudo systemctl start postgresql-18.service

Ubuntu/Debian

  1. PostgreSQL 18 をインストールします。PostgreSQL APT リポジトリを設定し、パッケージをインストールします。

    # 公式の PostgreSQL APT リポジトリを追加し、Alibaba Cloud ミラーを使用します。
    sudo sh -c 'echo "deb [signed-by=/etc/apt/trusted.gpg.d/postgresql.gpg] http://mirrors.cloud.aliyuncs.com/postgresql/repos/apt/ $(lsb_release -sc)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    
    # リポジトリ署名キーをインポートします。
    wget -qO - http://mirrors.cloud.aliyuncs.com/postgresql/repos/apt/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
    
    # パッケージリストを更新してインストールします。
    sudo apt-get update
    sudo apt-get install -y postgresql-18
  2. postgres ユーザーのホームディレクトリに .pgpass ファイルを作成し、自動認証用のパスワードを保存します。

    1. postgres ユーザーに切り替えます。

      sudo su - postgres
    2. .pgpass ファイルを作成して設定します。

      echo "192.168.1.10:5432:replication:replica_user:安全なパスワード" > ~/.pgpass
      chmod 600 ~/.pgpass
    3. postgres ユーザーセッションを終了します。

      exit
  3. pg_basebackup を使用して、プライマリノードからデータをクローンします。

    重要

    この操作はプライマリノードからすべてのデータをクローンし、ターゲットのデータディレクトリ /var/lib/postgresql/18/main/ を上書きします。このディレクトリが空であることを確認してください。

    # postgres ユーザーとしてベースバックアップを実行します。
    sudo -u postgres pg_basebackup -h 192.168.1.10 -D /var/lib/postgresql/18/main/ -U replica_user -P -v --wal-method=stream
    • -h:プライマリノードの IP アドレス。

    • -D:セカンダリノードのデータディレクトリ。

    • -U:PostgreSQL のユーザー名。

  4. standby.signal ファイルを作成してスタンバイモードを有効にします。この空のファイルは、PostgreSQL にプライマリとしてではなくスタンバイモードで起動するように指示します。

    sudo -u postgres touch /var/lib/postgresql/18/main/standby.signal
  5. プライマリに接続するようにセカンダリを設定します。/etc/postgresql/18/main/postgresql.conf ファイルを編集し、次の設定を追加します:

    primary_conninfo にパスワードを含める必要はありません。PostgreSQL は .pgpass ファイルからパスワードを自動的に使用します。
    # ストリーミングレプリケーション用のプライマリノード接続情報。
    # application_name は、この接続を識別するための名前です。
    primary_conninfo = 'host=192.168.1.10 port=5432 user=replica_user application_name=secondary_node1'
    # レプリケーションスロット名を指定します。プライマリノードで作成されたスロットの名前と一致する必要があります。
    primary_slot_name = 'secondary_slot'
    # ホットスタンバイモードを有効にして、同期中に読み取り専用クエリを許可します。
    hot_standby = on
  6. セカンダリノードのサービスを起動します。

    sudo systemctl enable postgresql.service
    sudo systemctl start postgresql.service

Alibaba Cloud Linux 2/CentOS 7

  1. PostgreSQL 15 をインストールします。YUM リポジトリを設定し、サーバーパッケージをインストールします。

    # 公式の PostgreSQL YUM リポジトリを追加します。
    sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/postgresql/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # リポジトリの URL を Alibaba Cloud ミラーに置き換えて、ダウンロードを高速化します。
    sudo sed -i "s@https://download.postgresql.org/pub@http://mirrors.cloud.aliyuncs.com/postgresql@g" /etc/yum.repos.d/pgdg-redhat-all.repo
    sudo sed -i "s@\$releasever@7@g" /etc/yum.repos.d/pgdg-redhat-all.repo
    # PostgreSQL 15 サーバーをインストールします。
    sudo yum install -y postgresql15-server
  2. postgres ユーザーのホームディレクトリに .pgpass ファイルを作成し、自動認証用のパスワードを保存します。

    1. postgres ユーザーに切り替えます。

      sudo su - postgres
    2. .pgpass ファイルを作成して設定します。

      echo "192.168.1.10:5432:replication:replica_user:安全なパスワード" > ~/.pgpass
      chmod 600 ~/.pgpass
    3. postgres ユーザーセッションを終了します。

      exit
  3. pg_basebackup を使用して、プライマリノードからデータをクローンします。

    重要

    この操作はプライマリノードからすべてのデータをクローンし、ターゲットのデータディレクトリ /var/lib/pgsql/15/data/ を上書きします。このディレクトリが空であることを確認してください。

    # postgres ユーザーとしてベースバックアップを実行します。
    sudo -u postgres pg_basebackup -h 192.168.1.10 -D /var/lib/pgsql/15/data/ -U replica_user -P -v --wal-method=stream
    • -h:プライマリノードの IP アドレス。

    • -D:セカンダリノードのデータディレクトリ。

    • -U:PostgreSQL のユーザー名。

  4. standby.signal ファイルを作成してスタンバイモードを有効にします。この空のファイルは、PostgreSQL にプライマリとしてではなくスタンバイモードで起動するように指示します。

    sudo -u postgres touch /var/lib/pgsql/15/data/standby.signal
  5. プライマリに接続するようにセカンダリを設定します。/var/lib/pgsql/15/data/postgresql.conf ファイルを編集し、次の設定を追加します:

    primary_conninfo にパスワードを含める必要はありません。PostgreSQL は .pgpass ファイルからパスワードを自動的に使用します。
    # ストリーミングレプリケーション用のプライマリノード接続情報。
    # application_name は、この接続を識別するための名前です。
    primary_conninfo = 'host=192.168.1.10 port=5432 user=replica_user application_name=secondary_node1'
    # レプリケーションスロット名を指定します。プライマリノードで作成されたスロットの名前と一致する必要があります。
    primary_slot_name = 'secondary_slot'
    # ホットスタンバイモードを有効にして、同期中に読み取り専用クエリを許可します。
    hot_standby = on
  6. セカンダリノードのサービスを起動します。

    sudo systemctl enable postgresql-15.service
    sudo systemctl start postgresql-15.service

ステップ 4:レプリケーションステータスの確認

  1. レプリケーション関連のプロセスを確認します。

    walsender (プライマリノード上) および walreceiver (セカンダリノード上) プロセスがデータ同期を処理します。これらのプロセスが実行中であることは、アクティブなレプリケーション接続を示します。

    • プライマリノードで、walsender プロセスを確認します:

      ps aux | grep "walsender.*streaming"

      期待される出力は次のようになります:postgres: walsender replica_user 192.168.1.20(xxxxx) streaming

    • セカンダリノードで、walreceiver プロセスを確認します:

      ps aux | grep "walreceiver.*streaming"

      期待される出力は次のようになります:postgres: walreceiver streaming

  2. データ同期テストを実行します。

    プライマリノードにデータを書き込み、セカンダリノードでその存在を確認することで、レプリケーションをテストします。

    • プライマリノードで、テストテーブルを作成し、データを挿入します。

      sudo -u postgres psql -c "CREATE TABLE replication_test (id serial primary key, test_data text, created_at timestamptz default now());"
      sudo -u postgres psql -c "INSERT INTO replication_test (test_data) VALUES ('hello replication');"
    • セカンダリノードで、テーブルをクエリしてデータが同期されたことを確認します。

      # プライマリ/セカンダリ間の同期には通常、多少の遅延があります。クエリを実行する前に数秒待ってください。
      sudo -u postgres psql -c "SELECT * FROM replication_test;"

      クエリが挿入されたデータを返した場合、レプリケーションは正しく設定されています。