プライマリサーバのデータベース多重化運用のセットアップについて、説明します。
データベース多重化機能では、動作に必要なファイルをMirroring Controller管理ディレクトリで管理します。
1つのインスタンスに対して1つのMirroring Controller管理ディレクトリが対応します。
注意
Mirroring Controller管理ディレクトリは、FUJITSU Enterprise Postgresが管理するディレクトリとともに誤って削除されたり、FUJITSU Enterprise Postgresのリカバリとともに古いファイルに戻されたりすることがないようにFUJITSU Enterprise Postgresが管理するディレクトリ配下に配置しないでください。
参照
FUJITSU Enterprise Postgresが管理するディレクトリの詳細は、“導入ガイド(サーバ編)”の“セットアップ”の“資源配置用のディレクトリの準備”を参照してください。
mc_ctlコマンドの詳細は、“リファレンス”を参照してください。
セットアップで編集する各パラメータの詳細については、“付録A パラメータ”を参照してください。
以下の手順で行います。
プライマリサーバにログインします。
データベース多重化機能で必要なファイルを格納するMirroring Controller管理ディレクトリを作成します。
Mirroring Controller管理ディレクトリは、ASCII文字で指定してください。
また、インスタンス管理者ユーザーに対する書き込み権限を付与してください。
Mirroring Controllerのプロセス間で連携するネットワークの構成をネットワーク定義ファイル(network.confファイル)に定義します。
サンプルファイルをもとにして、Mirroring Controller管理ディレクトリにnetwork.confファイルを作成します。
サンプルファイルのパス
インストールディレクトリ\share\mc_network.conf.sample
network.confファイルには、プライマリサーバとスタンバイサーバのIPアドレスまたはホスト名、およびポート番号を指定して、Mirroring Controllerのプロセス同士およびMirroring ControllerプロセスとMirroring Controller裁定プロセスが連携するためのネットワークの構成を定義します。
詳細は、“A.3 ネットワーク定義ファイル”を参照してください。
以下に定義例を示します。
ハートビート異常検出時の動作の設定値によって、定義内容が異なります。
例) プライマリサーバ、スタンバイサーバのサーバ識別子に“server1”および“server2”、ポート番号に“27540”“27541”、また、Mirroring Controller裁定プロセスのサーバ識別子に“arbiter”、ポート番号に“27541”を指定している場合の例を以下に示します。
server1 192.0.2.100,192.0.3.100 27540,27541 server server2 192.0.2.110,192.0.3.110 27540,27541 server arbiter 192.0.3.120 27541 arbiter
ポート番号は、プライマリサーバ、スタンバイサーバ、裁定サーバのどのサーバにおいても、他のソフトウェアと重ならないように設定してください。また、裁定サーバを利用して自動縮退を行う運用の場合は、裁定用ネットワークが管理用ネットワークの回線障害の影響を受けないネットワークを利用してください。
サーバ種別が“server”の場合、IPアドレスまたはホスト名、およびポート番号を以下の順序で指定する必要があります。
管理用ネットワークとして使用するデータベースサーバ側のIPアドレスまたはホスト名
裁定用ネットワークとして使用するデータベースサーバ側のIPアドレスまたはホスト名
管理用ネットワークとして使用するデータベースサーバ側のポート番号
裁定用ネットワークとして使用するデータベースサーバ側のポート番号
サーバ種別が“arbiter”の場合、裁定サーバのarbitration.confファイルのmy_addressパラメータで指定したIPアドレスまたはホスト名とportパラメータに指定したポート番号を指定する必要があります。
例) サーバ識別子に“server1”および“server2”、ポート番号に“27540”を指定している場合の例を以下に示します。
server1 192.0.2.100 27540 server2 192.0.2.110 27540
WebAdminのようにサービスファイルを用いて空きポート番号を検索して使用するプログラムが存在するため、プライマリサーバ側のポート番号をサービスファイルに登録しておいてください。
なお、サービス名は、任意の名前で登録してください。
network.confファイルのアクセス権限を変更します。
network.confファイルには、インスタンス管理者ユーザーにのみ読み込み権限と書き込み権限を設定してください。
インスタンス管理者ユーザー以外にアクセス権限が与えられていた場合には、mc_ctlコマンドは動作しません。これにより、インスタンス管理者ユーザー以外がMirroring Controllerを操作することを防止します。
例) インスタンス管理者ユーザーのOSのユーザー名が“fsepuser”の場合に、インスタンス管理者ユーザーを所有者にしてフルアクセス権を付与する場合の実行例を示します。Windowsサーバに“fsepuser”でログインしている場合の操作手順です。
> takeown /f network.conf > icacls network.conf /reset > icacls network.conf /inheritance:r > icacls network.conf /grant fsepuser:F
Mirroring Controllerの監視および制御に関する情報をサーバ識別子.confファイルに定義します。
サンプルファイルをもとにして、Mirroring Controller管理ディレクトリにサーバ識別子.confファイルを作成します。
サーバ識別子.confファイルのファイル名には、手順3でnetwork.confファイルに指定したサーバ識別子名を使用してください。
サンプルファイルのパス
インストールディレクトリ\share\mc_server.conf.sample
サーバ識別子.confファイルには、以下のパラメータを設定します。
パラメータ | 指定内容 | 備考 |
---|---|---|
db_instance | 'データ格納先ディレクトリ' | ASCII文字で、パスの区切り文字には\\を指定してください。 半角シングルクォートで囲んで指定してください。 |
db_instance_service_name | 'FUJITSU Enterprise Postgresのインスタンスの登録サービス名' | FUJITSU Enterprise PostgresインスタンスのWindowsサービスへの登録サービス名を指定します。 半角シングルクォートで囲んで、ASCII文字で指定してください。 本パラメータの指定値に'または\を含む場合は、それぞれ\'および\\と記載してください。 |
enable_hash_in_password | onまたはoff | db_instance_passwordの指定値に含まれている#をパスワードの文字とみなす場合はonを指定し、コメントとみなす場合はoffを指定します。 デフォルトはoffです。 |
db_instance_password | 'インスタンス管理者ユーザーのユーザー名に対応するパスワード' | Mirroring Controllerからデータベースのインスタンスへの接続設定において、パスワード認証を行う場合に指定してください。 半角シングルクォートで囲んで、ASCII文字で指定してください。 |
mc_service_name | 'Mirroring Controllerの登録サービス名’ | Mirroring ControllerのWindowsサービスへの登録サービス名を指定します。スラッシュ(/)および円記号(\)以外のASCII文字で指定してください。 サービス名の最大長は124バイトです。 |
event_source | 'イベントソース名' | イベントログ内のMirroring Controllerメッセージを特定するために使用するイベントソース名を指定してください。ASCII文字で指定してください。 イベントソース名の最大長は255バイトです。 postgresql.confファイルのパラメータと似たイベントソース名にすることで、Mirroring Controllerの出力内容を透過的に参照できるため、ログの参照が容易になります。 |
remote_call_timeout | 管理通信のタイムアウト | Mirroring Controllerのエージェントプロセスがサーバ間で行う通信のタイムアウト値(ミリ秒)を指定します。OSのTCP接続のタイムアウト時間よりも短くなるように指定してください。 |
heartbeat_error_action | OS/サーバの生死監視においてハートビート異常を検出した場合の動作 | arbitration:裁定サーバを利用して自動縮退を行います。 command:縮退の判断を行うユーザー出口を呼び出して自動縮退を行います。 message:メッセージを通知します。 fallback:無条件に自動縮退を行います。 プライマリサーバおよびスタンバイサーバで同じ設定にしてください。 |
heartbeat_interval | OS/サーバの生死監視における異常監視の間隔時間(ミリ秒数) | OS/サーバを監視するため、heartbeat_intervalに指定した間隔(ミリ秒)で異常の監視を行います。 本パラメータの設定は、データベースプロセスの生死監視、ストリーミングレプリケーションの異常監視およびディスク異常監視のデフォルト値として使用されます。 監視時間に関する設定には、異常監視による縮退を最適化するために考慮することがあります。詳細は、“2.11.4.1 OS/サーバの異常監視のチューニング”を参照してください。 |
heartbeat_timeout | OS/サーバの生死監視における異常監視のタイムアウト時間(秒数) | |
heartbeat_retry | OS/サーバの生死監視における異常監視のリトライ回数(回数) | |
fencing_command | 'フェンシングコマンドのファイルパス名' [設定例] fencing_command = 'c:\\mc\\fencing_dir\\execute_fencing.bat' | 異常と判断したデータベースサーバをフェンシングするフェンシングコマンドのファイルパス名を指定します。 区切り文字には\\を指定してください。 ファイルパス名は絶対パスを指定し、半角シングルクォートで囲んで指定してください。 マルチバイト文字を使用する場合、OSの文字コードと同じにしてください。 本パラメータは、heartbeat_error_actionにcommandを設定した場合は、指定必須です。 260バイト未満の長さで指定してください。 |
fencing_command_timeout | フェンシングコマンドのタイムアウト時間(秒数) | 指定された秒数以上のあいだ、コマンドの応答がない場合は、フェンシングに失敗したと判断し、フェンシングコマンドの実行プロセスに対して、シグナル(SIGTERM)を送信します。 1~2147483647の間の数値で指定してください。 デフォルトは20秒です。 |
arbitration_timeout | Mirroring Controller裁定プロセスでの裁定処理のタイムアウト時間(秒数) | OS/サーバの生死監視時間 + 裁定定義ファイルのfencing_command_timeout以上の値を指定する必要があります。 指定された秒数以上のあいだ、応答がない場合には、プライマリサーバの切り替えやスタンバイサーバの切り離しは行われません。そのため、手動での縮退操作を行ってください。 1~2147483647の間の数値で指定してください。 本パラメータは、裁定サーバを利用しない運用では設定不要です。 |
arbitration_command | '裁定コマンドのファイルパス' [設定例] arbitration_command = 'c:\\mc\\arbitration_dir\\execute_arbitration_command.bat' | OS/サーバの生死監視において異常を検出した場合に実行する裁定コマンドのファイルパス名を指定します。 ファイルパス名は絶対パスで指定し、半角シングルクォートで囲んでください。 マルチバイト文字を使用する場合、OSの文字コードと同じにしてください。 本パラメータは、heartbeat_error_actionにcommandを設定した場合は、指定必須です。 260バイト未満の長さで指定してください。 |
arbitration_command_timeout | 裁定コマンドのタイムアウト時間(秒数) | 指定された秒数以上のあいだ、コマンドの応答がない場合は、裁定コマンドの実行に失敗したと判断し、裁定コマンドの実行プロセスに対して、シグナル(SIGTERM)を送信します。 1~2147483647の間の数値で指定してください。 本パラメータは、heartbeat_error_actionにcommandを設定した場合のみ、指定可能です。 |
参考
各パラメータの詳細およびその他のパラメータについては、“A.4.1 データベースサーバのサーバ定義ファイル”を参照してください。
サーバ識別子.confファイルのアクセス権限を変更します。
サーバ識別子.confファイルには、インスタンス管理者ユーザーにのみ読み込み権限と書き込み権限を設定してください。インスタンス管理者ユーザー以外にアクセス権限が与えられていた場合には、mc_ctlコマンドは動作しません。
例) インスタンス管理者ユーザーのOSのユーザー名が“fsepuser”の場合に、インスタンス管理者ユーザーを所有者にしてフルアクセス権を付与する場合の実行例を示します。Windowsサーバに“fsepuser”でログインしている場合の操作手順です。
> takeown /f サーバ識別子.conf > icacls サーバ識別子.conf /reset > icacls サーバ識別子.conf /inheritance:r > icacls サーバ識別子.conf /grant fsepuser:F
Windowsファイアウォールを設定します。
Windowsファイアウォール機能を有効にする場合、手順3でネットワーク定義ファイルに指定したMirroring Controllerのポート番号を有効にしてください。詳細は、“E.2 Windowsファイアウォールの設定”を参照してください。
WindowsサービスへMirroring Controllerを登録します。
mc_ctlコマンドをregisterモードで実行します。
mc_ctlコマンドの-Pオプションには、コマンドを実行したOSユーザーのパスワードを指定してください。
例)
> mc_ctl register -M D:\mcdir\inst1 -P ********
注意
mc_ctlコマンドの-Pオプションにパスワードを指定するときには、セキュリティ上の観点から他のユーザーに参照されないように注意してください。
参考
mc_ctlコマンドの-SオプションでMirroring Controllerの自動起動・停止の設定を行うことができます。詳細は、“2.12 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照してください。
手順5でサーバ識別子.confファイルのmc_service_nameパラメータに指定したサービス名で、WindowsサービスにMirroring Controllerが登録されます。
sc qcコマンドを実行して、登録状態を確認することもできます。