ページの先頭行へ戻る
Enterprise Postgres 15 クラスタ運用ガイド(PRIMECLUSTER編)

C.3.1 プライマリサーバのセットアップ

第2章 フェイルオーバ運用のセットアップ”を参照して、プライマリサーバのセットアップを行います。

ただし、“2.2 PRIMECLUSTERの設定”、“2.7 データベースクラスタの作成”および“2.11 クラスタアプリケーションの作成”では、追加の注意事項や必要手順があります。

GLS設定時注意事項

2.2 PRIMECLUSTERの設定”で行うGLSの設定について、業務用ネットワークとログ転送用ネットワークを別ネットワークとする場合、両方のネットワークについてGLSの設定が必要です。

ポイント

GLSで設定された通信路をクラスタに登録する場合、デフォルトでは伝送路異常となった際にクラスタの切替えが行われる設定となっています。業務用ネットワークについては、これは望ましい設定ですが、ログ転送用ネットワークについては業務継続上必須のネットワークではないため、デフォルト設定のままでは不必要な切替えが発生する場合があります。

この問題を回避するため、GLS設定時に、ログ転送用ネットワークについては伝送路異常時にクラスタ切替えを行わない設定とすることを推奨します。

参照

伝送路異常時にクラスタ切替えを行わない設定の方法については、GLSのマニュアルを参照してください。

注意

ログ転送用ネットワークの伝送路異常時に切替えを行わない設定にした場合、運用系のログ転送用ネットワークがすべて異常となった際にはストリーミングレプリケーションが中断された状態で業務継続することになります。ストリーミングレプリケーションを再開するには異常箇所を特定し、手動での対処(クラスタの切替えや、故障経路の修理など)が必要です。

データベースクラスタ作成時の追加手順

2.7 データベースクラスタの作成”では、以下の手順が追加で必要です。

pg_hba.confファイルの設定

スタンバイサーバからの接続を認証するために、pg_hba.confファイルに以下のエントリーを追加します。

# TYPE    DATABASE        USER          ADDRESS                                     METHOD
  host    replication     ユーザー名    スタンバイサーバアドレス                  認証方式

ユーザー名には、スタンバイサーバから接続するユーザー名を指定します。また、スタンバイサーバのアドレスには、ログ転送用ネットワークに接続するIPアドレスを指定します。

上記の例はスタンバイサーバが1つのみの場合の例です。スタンバイサーバとして接続する可能性があるすべてのサーバについてエントリーを追加してください。

ポイント

認証方式にtrust認証以外の方式を設定する場合

スタンバイサーバからインスタンス管理者ユーザーで接続する場合、プライマリサーバへの接続で自動認証を行うためにインスタンス管理者ユーザーのホームディレクトリに、.pgpassファイルを作成してreplicationデータベースに対するパスワードを指定します。これにより、インスタンス管理者ユーザーのOSユーザーとデータベースに登録したユーザーが同一となり、不特定のユーザーによる接続ではないことが検証できます。また、事前に設定したパスワードが認証に用いられて、自動的に接続できます。

注意

trust認証に設定すると、プライマリサーバにログイン可能なすべてのOSユーザーが接続できてしまうため、悪意のあるユーザーがいた場合には、誤ったトランザクションログを送信することで、スタンバイサーバのデータを破壊したり、業務システムをクラッシュさせたりしてしまいます。そのため、ストリーミングレプリケーション運用を行うシステムのセキュリティ要件に応じて、認証方式を決定してください。

なお、認証方式の詳細は、“PostgreSQL Documentation”の“Authentication Methods”を参照してください。

postgresql.confファイルの設定

ストリーミングレプリケーションを行うためにpostgresql.confファイルに以下のパラメータを指定します。postgresql.confファイルはスタンバイサーバのインスタンス作成時に複製されます。したがって、スタンバイサーバで必要なパラメータについても設定します。

表C.1 設定するパラメータ

パラメータ

指定内容

備考

wal_level

replicaまたはlogical

ロジカルデコーディングも使用する場合にはlogicalを指定します。

max_wal_senders

スタンバイサーバ数+ 1

スタンバイサーバの数(n)+1を指定してください。

hot_standby

on

スタンバイサーバで参照系の業務を行うため、指定してください。

wal_keep_size

WALの保存サイズ(メガバイト)

本パラメータの設定値を越える遅延が発生した場合、プライマリサーバはスタンバイサーバが今後必要とするWALセグメントを削除する可能性があります。

また、保守作業などでスタンバイサーバを停止させる場合、停止時間を考慮してWALセグメントが削除されない値を設定してください。

WALの保存サイズの見積もりの詳細は、“導入ガイド(サーバ編)”の“トランザクションログの容量の見積り”を参照してください。

wal_sender_timeout

タイムアウト時間(ミリ秒)

プライマリサーバ側でのトランザクションログの転送に異常が発生したと判断する時間を指定します。本パラメータを指定することで、スタンバイサーバがフェイルオーバ等で一時的に停止した場合でも、スタンバイサーバへのログ転送を再開することが可能となります。

wal_receiver_timeout

タイムアウト時間(ミリ秒)

スタンバイサーバ側でのトランザクションログの受信に異常が発生したと判断する時間を指定します。本パラメータを指定することで、プライマリサーバがフェイルオーバ等で一時的に停止した場合でも、プライマリサーバからのログ受信を再開することが可能となります。

ポイント

古いWALセグメントの削除を防ぐために、wal_keep_sizeパラメータではなく、レプリケーションスロットを使用することできます。レプリケーションスロットの詳細は“PostgreSQL Documentation”の“Replication Slots”を参照してください。

参照

  • pg_hba.confファイルの詳細は、“PostgreSQL Documentation”の“Client Authentication”を参照してください。

  • postgresql.confファイルの詳細は、“PostgreSQL Documentation”の“Server Configuration”を参照してください。

クラスタアプリケーション作成時の追加手順

2.11 クラスタアプリケーションの作成”では、以下の手順が追加で必要です。

アプリケーションからの接続を受け付ける業務用ネットワークと、ログ転送のためのレプリケーション接続を受け付けるログ転送用ネットワークがそれぞれ別のネットワークのGlsリソースとなっている場合、業務用ネットワークとログ転送ネットワークのGlsリソースを両方ともクラスタアプリケーションのリソースとして登録してください。