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

2.4.2 プライマリサーバのインスタンスの作成・設定・登録

プライマリサーバのインスタンスの作成・設定・登録について、説明します。

参照

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

  • postgresql.confファイルの詳細は、“A.1 プライマリサーバで設定するパラメータ”を参照してください。

  • mc_ctlコマンドの詳細は、“リファレンス”を参照してください。

以下の手順で行います。

  1. “導入ガイド(サーバ編)”の“セットアップ”を参照して、Fujitsu Enterprise Postgresのセットアップおよびインスタンスの作成を行います。

    データ格納先ディレクトリは、ASCII文字で指定してください。

    注意

    • データベース多重化運用で異常が発生し、縮退運転になった場合に、スタンバイサーバに対して復旧作業が必要です。スタンバイサーバの復旧にpg_rewindコマンドを使用する場合には、いくつかの前提条件があります。initdbコマンド実行時にチェックサムを有効にすると、その前提条件の1つを満たすことができます(必須ではありません)。前提条件の詳細については“4.1.1.1.3 異常原因の特定とリカバリ”を参照してください。

  2. 透過的データの暗号化機能を利用する場合は、格納データの暗号化の設定を行います。

    ファイルベースのキーストアを使用する場合は、キーストア・ファイルを作成します。

    鍵管理システムをキーストアとして使用する場合は、鍵管理システムの接続情報を設定し、マスタ暗号化キーを宣言します。

    詳細は、“運用ガイド”の“透過的データ暗号化による格納データの保護”または“鍵管理システムをキーストアとして使用する場合の透過的データ暗号化の運用”を参照して、設定してください。

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

    # TYPE    DATABASE        USER        ADDRESS                       METHOD
      host    replication     fsep        スタンバイサーバのアドレス    認証方式
      host    replication     fsep        プライマリサーバのアドレス    認証方式

    プライマリサーバおよびスタンバイサーバのアドレスには、ログ転送用ネットワークに接続するIPアドレスを指定します。また、すべてのサーバがスタンバイサーバにもプライマリサーバにもなることができるので、データベース多重化システムを構成するすべてのサーバのアドレスについて、エントリーを追加してください。

    ポイント

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

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

    注意

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

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

  4. プライマリサーバのインスタンス管理者ユーザーがデータベースアプリケーションとして接続できるように設定します。

    Mirroring Controllerがインスタンスの異常を監視するために、インスタンス管理者ユーザーのユーザー名でインスタンスに接続できるようにするための設定です。postgresデータベースに接続できるように設定します。

    • パスワード認証を行う場合

      サーバ識別子.confファイルのdb_instance_passwordパラメータにインスタンス管理者ユーザーのユーザー名に対応するパスワードを指定してください。このパスワードを使用して、データベースのインスタンスへの接続を行います。db_instance_passwordパラメータにパスワードを指定しない場合、Mirroring Controllerからデータベースのインスタンスへの接続が失敗して、インスタンスのプロセス監視を正常に行えません。

    • パスワード認証を行わない場合

      db_instance_passwordパラメータへの指定は不要です。

      db_instance_passwordパラメータにインスタンス管理者ユーザーのユーザー名に対応するパスワードを指定しても、指定したパスワードは無視されます。

    • SSLによる証明書認証を行う場合

      サーバ識別子.confファイルのdb_instance_ext_pq_conninfoパラメータおよびdb_instance_ext_jdbc_conninfoパラメータにSSLに関する接続パラメータを指定してください。パラメータを指定しない場合、Mirroring Controllerからデータベースのインスタンスへの接続が失敗して、インスタンスのプロセス監視を正常に行えません。SSLによる証明書認証を行わない場合、パラメータの指定は不要です。

    設定例を以下に示します。

    # TYPE    DATABASE        USER        ADDRESS        METHOD
      host    postgres        fsep        127.0.0.1/32   認証方式

    注意

    Mirroring ControllerはPostgreSQL JDBC 4.2ドライバを使用してデータベースのインスタンスへ接続を行います。そのため、認証方式は、JDBCドライバがサポートする方式を指定してください。JDBCドライバがサポートしない認証方式を指定した場合、Mirroring Controllerの起動が失敗します。JDBCドライバがサポートする認証方式については、“PostgreSQL JDBC Driver”のマニュアルを参照してください。

  5. データベース多重化運用を行うためにpostgresql.confファイルに以下のパラメータを指定します。

    postgresql.confファイルはスタンバイサーバのインスタンス作成時に複製されます。したがって、スタンバイサーバで必要なパラメータについても設定します。

    postgresql.confファイルを編集したあと、インスタンスを再起動してください。

    表2.4 設定するパラメータ

    パラメータ

    指定内容

    備考

    wal_level

    replicaまたはlogical

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

    max_wal_senders

    2以上

    Mirroring Controllerのクラスタシステムを構築する場合は、2を指定します。

    また、クラスタシステムに非同期スタンバイサーバを追加で接続する場合には、これらのスタンバイサーバからの同時接続数を加算してください。

    synchronous_standby_names

    'スタンバイサーバ名'

    スタンバイサーバを識別する任意の名前を半角シングルクォートで囲んで指定してください。

    Mirroring Controller起動中は、本パラメータを変更しないでください。

    Mirroring Controllerが管理できるスタンバイサーバは1つであるため、本パラメータに複数の名前を指定しないでください。

    hot_standby

    on

    wal_keep_size

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

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

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

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

    wal_log_hints

    on

    スタンバイサーバの復旧時にpg_rewindコマンドを使用する場合には、本パラメータを設定するかまたはinitdbコマンド実行時にチェックサムを有効にしてください。

    wal_sender_timeout

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

    プライマリサーバ側でのトランザクションログの転送に異常が発生したと判断する時間を指定します。

    データベースプロセスの生死監視時間の値と合わせることで、異常と判断する時間を統一できます。

    archive_mode

    on

    アーカイブログモードを指定します。

    archive_command

    'インストールディレクトリ/bin/pgx_walcopy.cmd "%p" "バックアップデータ格納先ディレクトリ/archived_wal/%f"'

    トランザクションログを保存するコマンドと格納先パス名を指定します。

    backup_destination

    バックアップデータ格納先ディレクトリ名

    バックアップデータ格納先ディレクトリ名を指定します。

    指定するディレクトリは、インスタンス管理者ユーザーのみがアクセスできるように権限を設定してください。

    他のサーバのバックアップデータを使ってリカバリを正しく行うために、すべてのサーバで同じパスになるように指定してください。

    max_connections

    インスタンスへのクライアントの同時接続数+superuser_reserved_connectionsの値

    指定値は、クライアントアプリケーションからの接続数とインスタンス管理のための接続数を制限するためにも使用されます。

    詳細は、“導入ガイド(サーバ編)”の“initdbコマンドでインスタンスを作成した場合”および“PostgreSQL Documentation”の“Connections and Authentication”を参照してください。

    superuser_reserved_connections

    mc_ctl statusの同時実行数(注)+2を加算

    データベーススーパーユーザーからの接続のために予約されている接続数を指定します。

    Mirroring Controllerプロセスからの接続数を加算します。また、加算した値はmax_connectionsパラメータにも反映してください。

    wal_receiver_timeout

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

    スタンバイサーバ側でのトランザクションログの受信に異常が発生したと判断する時間を指定します。

    データベースプロセスの生死監視時間の値と合わせることで、異常と判断する時間を統一できます。

    restart_after_crash

    off

    restart_after_crash パラメータにonを指定またはデフォルトの場合、一部のサーバプロセスがダウンした際に、クラッシュリカバリを含めたFujitsu Enterprise Postgresの再起動に相当する動作が行われます。

    しかし、データベース多重化運用による監視の機能で一部のサーバプロセスがダウンした時点で異常を検知してフェイルオーバが発生し、再起動途中のサーバプロセスが強制停止されます。このような意味なく再起動して途中でキャンセルされるという複雑な動作を抑止するためにoffを設定します。

    synchronous_commit

    onまたはremote_apply

    トランザクションのコミット処理がクライアントに正常終了の応答を返す前に、スタンバイサーバへのWAL送信をどこまで行うかを指定します。

    切り替えや切り替え直後のOSやサーバのダウンからのデータ損失を防ぐために、onまたはremote_applyを推奨します。

    recovery_target_timeline

    latest

    切り替え発生時に、新スタンバイサーバ(旧プライマリサーバ)が新プライマリサーバに追随するために、latestを指定します。

    本パラメータの指定は、プライマリサーバの切り替え後、旧プライマリサーバを新しくスタンバイサーバとして組み込む時に必要です。

    注) mc_ctlコマンドのstatusモードでの同時実行数です。