Hitachi

ノンストップデータベース HiRDB Version 10 システム運用ガイド(UNIX(R)用)


26.7.7 系の切り替え時間の短縮(ユーザサーバホットスタンバイ,高速系切り替え機能)

系の切り替え時間を短縮する機能として次に示す機能があります。これらの機能を使用するにはサーバモードでの運用が前提となります。

〈この項の構成〉

(1) ユーザサーバホットスタンバイ

系切り替えが発生したとき,待機系HiRDBを開始するのに次に示す処理が実施されます。

この中のサーバプロセスの起動処理に掛かる時間は,系の切り替え時間の中で大きな割合を占めています。サーバプロセスの起動処理に掛かる時間はサーバプロセスの常駐数に比例するため,常駐数が多いと系の切り替え時間が長くなります。そこで,待機系HiRDBのサーバプロセスをあらかじめ起動しておいて,系の切り替え時にサーバプロセスの起動処理をしないようにします。系の切り替え時にサーバプロセスの起動処理がない分,系の切り替え時間を短縮できます。これをユーザサーバホットスタンバイといいます。例えば,100MIPSぐらいのサーバマシンでサーバプロセスを一つ起動するのに約1秒掛かります。その分,系の切り替え時間を短縮できます。

ユーザサーバホットスタンバイを使用するには,pd_ha_server_process_standbyオペランドにYを指定します。

(2) 高速系切り替え機能

待機系HiRDBのサーバプロセス及びシステムサーバをあらかじめ起動しておいて,系の切り替え時にサーバプロセス及びシステムサーバの起動処理をしません。これを高速系切り替え機能といいます。系の切り替え時にサーバプロセス及びシステムサーバの起動処理がない分,系の切り替え時間を短縮できます。

なお,高速系切り替え機能の方がユーザサーバホットスタンバイより系の切り替え時間を短縮できます(高速系切り替え機能はユーザサーバホットスタンバイの機能を包括しています)。

(a) IPアドレスについての条件

HiRDB/シングルサーバの場合

高速系切り替え機能をするユニットはIPアドレスを引き継げません。したがって,HiRDB/シングルサーバの場合はIPアドレスを引き継がない構成にしてください。

HiRDB/パラレルサーバの場合

高速系切り替え機能を使用するユニットはIPアドレスを引き継がないようにしてください。対象ユニットのユニット制御情報定義のpd_ha_ipaddr_inheritオペランドにNを指定します。高速系切り替え機能を使用しないユニットはIPアドレスを引き継ぐ構成にしてもかまいません。

システム構成例については,「高速系切り替え機能使用時のシステム構成例」を参照してください。

クラスタソフトウェアにHAモニタを使用している場合

実行系及び待機系HiRDB(又はユニット)の開始前に,pdunitオペランドの-x及び-cオプションに指定したIPアドレスを起動しておいてください。HAモニタ用のaliasオペランドの値.upファイルや,aliasオペランドの値.downファイルには,pdunitオペランドの-x又は-cオプションに指定したIPアドレスを指定しないでください。クライアント接続用IPアドレスを引き継ぐ場合は,クライアント接続用IPアドレスを指定してください。なお,クライアント接続用IPアドレスなどの引き継ぐIPアドレスがない場合は,HAモニタのserver定義文のlan_updownオペランドにnouseを指定するか,又はaliasオペランドの値.upファイルとaliasオペランドの値.downファイルを削除してください。

(b) 高速系切り替え機能を使用する場合に指定するオペランド

高速系切り替え機能を使用するには,pd_ha_agentオペランドにstandbyunitを指定します。

また,HiRDB/パラレルサーバの場合はトランザクションキューイング機能を使用するかどうかを検討してください。トランザクションキューイング機能を使用すると,系切り替え時のトランザクションエラーを少なくできます。トランザクションキューイング機能については,「トランザクションキューイング機能(高速系切り替え機能限定)」を参照してください。

(3) 高速系切り替え機能使用時のシステム構成例

高速系切り替え機能使用時のシステム構成例を次の図に示します。

図26‒106 高速系切り替え機能使用時のシステム構成例

[図データ]

〔説明〕
  • システムマネジャ及びフロントエンドサーバのユニット(ユニット1)はIPアドレスを引き継ぐ構成にするため,高速系切り替え機能を使用しません。ユーザサーバホットスタンバイを使用した1:1系切り替え構成にしています。

  • バックエンドサーバのユニット(ユニット2,ユニット3)には高速系切り替え機能を使用した相互系切り替え構成にしています。

このときのHiRDBシステム定義の指定例を次に示します。定義例はシステム共通定義及びユニット制御情報定義の関連のあるオペランドについてだけ説明しています。

●システム共通定義

set pd_ha = use
set pd_name_port = 20000
 
pdunit -x hostAA -u unt1 -d "/hirdb1" -p 20000                       1
pdunit -x hostB -u unt2 -d "/hirdb2" -c hostBB -p 20001              2
pdunit -x hostC -u unt3 -d "/hirdb3" -c hostCC -p 20002              3
 
pdstart -t MGR -u unt1
pdstart -t DIC -u unt1 -s DIC
pdstart -t FES -u unt1 -s FES
pdstart -t BES -u unt2 -s BES1
pdstart -t BES -u unt3 -s BES2
〔説明〕
  1. ユニット1の定義です。IPアドレスを引き継ぐため,-cオプションを指定しません。

  2. ユニット2の定義です。IPアドレスを引き継がないため,-cオプションに予備系のホスト名を指定します。

  3. ユニット3の定義です。IPアドレスを引き継がないため,-cオプションに予備系のホスト名を指定します。

●ユニット制御情報定義(ユニット1)

set pd_hostname = host1                             1
set pd_ha_acttype = server                          2
set pd_ha_server_process_standby = Y                3
〔説明〕
  1. 現用系の標準ホスト名を指定します。

  2. 系切り替え機能をサーバモードで実行します。サーバモードはユーザサーバホットスタンバイの前提条件です。

  3. このユニットに対してユーザサーバホットスタンバイを使用します。

●ユニット制御情報定義(ユニット2)

set pd_hostname = hostB                            1
set pd_ha_acttype = server                         2
set pd_ha_ipaddr_inherit = N                       3
set pd_ha_agent = standbyunit                      4
〔説明〕
  1. 現用系のホスト名を指定します。

  2. 系切り替え機能をサーバモードで実行します。サーバモードは高速系切り替え機能の前提条件です。

  3. IPアドレスを引き継がない指定です。高速系切り替え機能を使用するユニットではIPアドレスを引き継げません。

  4. このユニットに対して高速系切り替え機能を使用します。

●ユニット制御情報定義(ユニット3)

set pd_hostname = hostC                           1
set pd_ha_acttype = server                        2
set pd_ha_ipaddr_inherit = N                      3
set pd_ha_agent = standbyunit                     4
〔説明〕
  1. 現用系のホスト名を指定します。

  2. 系切り替え機能をサーバモードで実行します。サーバモードは高速系切り替え機能の前提条件です。

  3. IPアドレスを引き継がない指定です。高速系切り替え機能を使用するユニットではIPアドレスを引き継げません。

  4. このユニットに対して高速系切り替え機能を使用します。

(4) 待機系の起動に時間が掛かる場合の確認作業

待機系の起動処理には実行系の起動を待ち合わせる処理があります。高速系切り替え機能を使用する待機系ユニットの起動に時間が掛かる場合は次に示すことを確認してください。

  1. 実行系が起動しているか確認してください。起動していない場合は実行系を起動してください。

  2. 待機系HiRDBが内部的に発行するpdenvcpコマンドが無応答になっていないか,pdls -d prc -aコマンドで確認してください。無応答の場合は,実行系に_pd0envcコマンドプロセスが残っていないかを確認してください。残っている場合は,このプロセスを終わらせた後に待機系を再起動してください。

  3. 実行系HiRDBが内部的に発行するpdenvcpコマンドが,RPC,ファイル入出力処理で停止してないかpdls -d rpcコマンドで確認してください。ネットワークやOSの障害要因を取り除いた後に待機系を再起動してください。

  4. 系の切り替え時に待機系の起動処理がタイムアウトする場合は,pd_system_complete_wait_timeオペランド(pdstartコマンドの完了待ち時間)の値を見直してください。待機系の起動時間を考慮した値を設定した後に待機系を再起動してください。

  5. リストを多数使用していると,リストの初期化処理によって系の切り替え時間が掛かることがあります。この場合,リストの初期化時期の変更を検討してください。pd_list_initialize_timingオペランドでリストの初期化時期を変更できます。リストの初期化時期の変更方法については,「リストの初期化(削除)時期の変更」を参照してください。

(5) 高速系切り替え機能使用時の注意事項

(a) 待機系HiRDB(ユニット)を再度開始する必要がある操作

次の表に示す操作内容を実施したあとに,実行系HiRDB(ユニット)の再起動を実施したかどうか※1で,待機系HiRDB(HiRDB/パラレルサーバの場合は待機系ユニット)を一度終了してから再度開始する必要があります。待機系HiRDBを再度開始しないと,系切り替えが発生したときに待機系HiRDBが異常終了します。

表26‒89 待機系HiRDB(ユニット)を再度開始する必要がある操作

分類

条件

待機系HiRDB(ユニット)を再度開始する必要の有無

操作内容

実行系HiRDB(ユニット)の再起動の有無※1

SQLの実行

定義系SQLの実行

なし

−

あり

○

HiRDBシステム構築後最初の抽象データ型の

定義(CREATE TYPE文の実行)

なし

○

あり

○

運用コマンド

又は

ユティリティの

実行

構成変更ユティリティ(pdmod)の実行

HiRDBファイルシステム領域

の世代登録

なし

−

あり

−

HiRDBファイルシステム領域

の世代削除

なし

−

あり

−

監査人の登録

なし

−

あり

−

RDエリアの属性変更

なし

○

あり

○

監査証跡表の作成

なし

−

あり

○

上記以外の操作

なし

○※2

あり

○※2

pddbchgコマンドの実行

なし

−

あり

○

オンライン再編成の実行

(pdorbegin,pdorendコマンドの実行)

なし

−

あり

○

HiRDBシステム構築後最初のpdplgrgst

コマンドの実行(CREATE TYPE文の実行)

なし

○

あり

○

システム

共通定義の変更

次のどれかの定義の変更

  • グローバルバッファの定義(pdbuffer)

  • RDエリアの最大数(pd_max_rdarea_no)

  • RDエリアを構成するHiRDBファイルの

    最大数(pd_max_file_no)

  • インナレプリカグループの最大数

    (pd_inner_replica_control)

  • 表予約数の最低保証値

    (pd_assurance_table_no)

  • インデクス予約数の最低保証値

    (pd_assurance_index_no)

なし

−

あり

○

(凡例)

○:待機系HiRDBを再度開始する必要があります。

−:待機系HiRDBを再度開始する必要はありません。

注※1

クラスタソフトウェアにHAモニタを使用している場合は該当しません。HAモニタの場合は,pdstopコマンドで実行系HiRDB(ユニット)を停止すると,待機系HiRDB(ユニット)も連動して停止するため,”なし”を参照してください。

注※2

HiRDB/パラレルサーバの場合で,DSを配置しているユニットに高速系切り替え機能を適用している場合,その待機系ユニットの再起動も実施する必要があります。実施していない場合,そのユニットで系切り替えが発生すると異常終了します。

待機系HiRDBが異常終了した場合は,待機系HiRDBをpdstartコマンド(HiRDB/パラレルサーバの場合はpdstart -u又はpdstart -qコマンド)で開始してください。

(b) RDエリアのオープン契機について

高速系切り替え機能の対象になる待機系ユニットは,待機状態のときにRDエリアをオープンしていません。また,系切り替え時間を最小限に抑えるため,系切り替えの発生時に全面回復で必要なRDエリアだけをオープンして,そのほかのRDエリアはオープンしません。したがって,RDエリアのオープン契機は次のようになります。

  • pd_rdarea_open_attribute_useオペランドにNが指定されている場合,指定値に関係なくYが指定されているものとみなします。

  • 系切り替え発生時は,RDエリアオープン契機がINITIALの場合,指定値に関係なくDEFERが指定されているものとみなします。

RDエリアのオープン契機については,「RDエリアのオープン契機を変更する方法(RDエリアの属性変更)」を参照してください。

(c) OLTP製品と連携している場合

次に示す条件をすべて満たす場合は注意が必要です。

  • 高速系切り替え機能を使用している(HiRDB/パラレルサーバの場合はシステムマネジャのユニットを高速系切り替え機能の対象にしている)

  • X/Openに従ったAPIを使用したOLTP製品(OpenTP1又はTPBroker for C++など)と連携している

  • HiRDBクライアントのバージョンが06-02-/A以前である

  • OLTP製品のクライアント環境変数にHiRDB_PDHOSTを指定している

  • 現用系が待機系として待機完了状態になっている

この場合,OLTP製品が未決着トランザクションの回復処理をすると,X/Openに従ったAPIがエラーリターンしてトランザクションが回復されないことがあります。この現象が発生する場合は,HiRDBクライアントのバージョンを06-02-/B以降にバージョンアップしてください。業務を停止させたくないなどの理由でHiRDBクライアントのバージョンアップがすぐにできない場合は,現用系HiRDB(ユニット)を待機系から実行系に系を切り替えてください。ただし,これは一時的な対応策です。HiRDBクライアントのバージョンアップで対応してください。