プライマリサーバのインスタンスの作成・設定・登録について、説明します。
注意
Mirroring Controllerは、Windowsサービスへ登録されているインスタンスを対象にします。
参照
pg_hba.confファイルの詳細は、“PostgreSQL Documentation”の“Client Authentication”を参照してください。
postgresql.confファイルの詳細は、“A.1 プライマリサーバで設定するパラメータ”を参照してください。
mc_ctlコマンドの詳細は、“リファレンス”を参照してください。
以下の手順で行います。
“導入ガイド(サーバ編)”の“セットアップ”を参照して、FUJITSU Enterprise Postgresのセットアップおよびインスタンスの作成を行います。
データ格納先ディレクトリは、ASCII文字で指定してください。
Windowsサービスへのインスタンスの登録時には、Mirroring Controllerがインスタンスを起動/停止するために必要な指定があります。pg_ctlコマンドのregisterモードに以下を指定して実行してください。
-Nオプションのサービス名には、サーバ定義ファイルのdb_instance_service_nameパラメータに指定した名前を指定する
-Sオプションに“demand”を指定して、システム起動時に自動的にサービスを起動しない
注意
データベース多重化運用で異常が発生し、縮退運転になった場合に、スタンバイサーバに対して復旧作業が必要です。スタンバイサーバの復旧にpg_rewindコマンドを使用する場合には、いくつかの前提条件があります。initdbコマンド実行時にチェックサムを有効にすると、その前提条件の1つを満たすことができます(必須ではありません)。前提条件の詳細については“4.1.1.1.3 異常原因の特定とリカバリ”を参照してください。
多重化したインスタンスのWindowsサービスは、Mirroring Controllerが起動するため、自動起動を行う設定にしないでください。
透過的データの暗号化機能を利用する場合は、格納データの暗号化の設定を行います。
キーストア・ファイルを作成します。
詳細は、“運用ガイド”の“データベース多重化運用”を参照して、設定してください。
スタンバイサーバからの接続を認証するために、pg_hba.confファイルに以下のエントリーを追加します。本ファイルは、あとでスタンバイサーバに複写します。
# TYPE DATABASE USER ADDRESS METHOD host replication fsep スタンバイサーバのアドレス 認証方式 host replication fsep プライマリサーバのアドレス 認証方式
プライマリサーバおよびスタンバイサーバのアドレスには、ログ転送用ネットワークに接続するIPアドレスを指定します。また、すべてのサーバがスタンバイサーバにもプライマリサーバにもなることができるので、データベース多重化システムを構成するすべてのサーバのアドレスについて、エントリーを追加してください。
ポイント
認証方式にtrust認証以外の方式を設定する場合
プライマリサーバがスタンバイサーバになった時に、プライマリサーバへの接続で自動認証を行うために、パスワードファイル(%APPDATA%¥postgresql¥pgpass.conf)を作成してreplicationデータベースに対するパスワードを指定します。これにより、インスタンス管理者ユーザーのOSユーザーとデータベースに登録したユーザーが同一となり、不特定のユーザーによる接続ではないことが検証できます。また、事前に設定したパスワードが認証に用いられて、自動的に接続できます。
注意
trust認証に設定すると、プライマリサーバにログイン可能なすべてのOSユーザーが接続できてしまうため、悪意のあるユーザーがいた場合には、誤ったトランザクションログを送信することで、スタンバイサーバのデータを破壊したり、業務システムをクラッシュさせたりしてしまいます。そのため、データベース多重化運用を行うシステムのセキュリティ要件に応じて、認証方式を決定してください。
なお、認証方式の詳細は、“PostgreSQL Documentation”の“Authentication Methods”を参照してください。
プライマリサーバのインスタンス管理者ユーザーがデータベースアプリケーションとして接続できるように設定します。
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”のマニュアルを参照してください。
データベース多重化運用を行うためにpostgresql.confファイルに以下のパラメータを指定します。
postgresql.confファイルはスタンバイサーバのインスタンス作成時に複製されます。したがって、スタンバイサーバで必要なパラメータについても設定します。
postgresql.confファイルを編集したあと、インスタンスを再起動してください。
パラメータ | 指定内容 | 備考 |
---|---|---|
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_segments | ファイルセグメント数(個数) | 本パラメータの設定値を越える遅延が発生した場合、プライマリサーバはスタンバイサーバが今後必要とするWALセグメントを削除する可能性があります。 また、保守作業などでスタンバイサーバを停止させる場合、停止時間を考慮してWALセグメントが削除されない値を設定してください。 WALセグメントの見積もりの詳細は、“導入ガイド(サーバ編)”の“トランザクションログの容量の見積り”を参照してください。 |
wal_log_hints | on | スタンバイサーバの復旧時にpg_rewindコマンドを使用する場合には、本パラメータを設定するかまたはinitdbコマンド実行時にチェックサムを有効にしてください。 |
wal_sender_timeout | タイムアウト時間(ミリ秒数) | プライマリサーバ側でのトランザクションログの転送に異常が発生したと判断する時間を指定します。 データベースプロセスの生死監視時間の値と合わせることで、異常と判断する時間を統一できます。 |
archive_mode | on | アーカイブログモードを指定します。 |
archive_command | 'cmd /c ""インストールディレクトリ\\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モードでの同時実行数です。