スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(Windows(R)用)

[目次][索引][前へ][次へ]

9.1.4 回復不要FES

フロントエンドサーバがあるユニットで障害が発生して異常終了すると,そのフロントエンドサーバから実行していたトランザクションは未決着状態になることがあります。未決着状態のトランザクションは,データベースの排他を確保しているため,一部のデータベースに対する参照又は更新が制限されます。通常,未決着状態のトランザクションの決着処理をするためには,フロントエンドサーバの障害を取り除いて再開始する必要がありますが,異常終了したフロントエンドサーバが回復不要FESであれば,HiRDBが自動的に未決着状態になっていたトランザクションを決着します。これによって,ほかのフロントエンドサーバやバックエンドサーバを使用して,データベースの更新を再開できます。回復不要FESがあるユニットを回復不要FESユニットといいます。回復不要FESを使用する場合としない場合の運用を次の図に示します。

図9-3 回復不要FESを使用する場合としない場合の運用

[図データ]

なお,回復不要FESを使用するためには,HiRDB Non Recover FESが必要です。

メリット
障害が発生したフロントエンドサーバを再開始しないで,残りのフロントエンドサーバでオンライン運用を続行できます。

適用基準
24時間連続稼働が必要なシステムの場合に適用をお勧めします。

ほかのフロントエンドサーバとの関係
  • 回復不要FESは,単独で構成されるユニットに配置してください。
  • 回復不要FESでは,X/Open XAインタフェースを使用して接続するUAPは実行できません。クライアント環境定義のPDFESHOST及びPDSERVICEGRPを指定して,回復不要FES以外のフロントエンドサーバに接続してください。
  • 回復不要FES,及び回復不要FESユニットが停止していても,pdrplstartコマンド,及びpdrplstopコマンドは実行できます。
回復不要FESを使用したシステムの構成例を次の図に示します。

図9-4 回復不要FESを使用したシステムの構成例

[図データ]
  • 回復不要FESでは,反映側Datareplicatorの同期点処理方式に二相コミット方式を利用(反映システム定義commitment_methodオペランドにfxa_sqleを指定)した反映処理を実行できません。反映側Datareplicatorの同期点処理方式に二相コミット方式を利用する場合,反映側HiRDBに回復不要FES以外のフロントエンドサーバを一つ以上配置し,反映側Datareplicatorにクライアント環境変数PDFESHOST及びPDSERVICEGRPを設定して,回復不要FES以外のフロントエンドサーバに接続してください。

ほかの機能との関連
  • 回復不要FESユニットでは,系切り替え機能を適用できません。系切り替え機能を適用するシステムの場合,回復不要FESユニットのユニット制御情報定義のpd_ha_unitオペランドに必ずnouseを指定してください。
<この項の構成>
(1) 設定方法
(2) 注意事項

(1) 設定方法

回復不要FESを使用するには,pdstartオペランドの-kオプションにstlsを指定します。

(2) 注意事項

  1. HiRDBを起動する場合に回復不要FESユニットが開始しないとき,HiRDBはpd_start_levelオペランドの指定値に関係なく,そのユニットを除いてHiRDBを開始します。すべてのフロントエンドサーバを回復不要FESにする場合,一つ以上のフロントエンドサーバが開始しないとHiRDBシステムの起動は完了しません。
  2. 回復不要FESユニットは独自に縮退起動をするため,pd_start_skip_unitオペランドに回復不要FESユニットの名称を指定しても無視します。
  3. 回復不要FESユニットが異常終了した場合,フロントエンドサーバ及びユニットのステータス情報はSTOP(A)になりますが,通常のSTOP(A)とは異なり,pdstopコマンドでHiRDBのシステムマネジャとほかのユニットを正常停止,又は計画停止できます。また,回復不要FESユニットを強制停止した場合,フロントエンドサーバ及びユニットのステータス情報はSTOP(F)になりますが,pdstopコマンドでHiRDBのシステムマネジャとほかのユニットを正常停止,又は計画停止できます。
  4. 回復不要FESユニットは,次の場合以外,常に正常開始でユニットを開始します。
    • ユニットを正常終了以外で停止していて,かつ前回稼働時にpdstartオペランドの-kオプションにstlsを指定していなかった場合
  5. 回復不要FESユニットのステータス情報がSTOP(A)になっていると,その回復不要FESにCONNECTしたUAPからのSQL要求をHiRDBが受け付けなくなります。この場合,KFPS01820-Eメッセージに表示される回復不要FESのプロセス終了状態は「c800」になります。また,SQLで操作しようとしたデータを持つバックエンドサーバやディクショナリサーバなどのサーバプロセスの終了状態は,KFPS01820-Eメッセージに「c900」と表示されることがあります。KFPS01820-Eメッセージが表示された場合,プロセス終了状態が「c800」と表示されたフロントエンドサーバがあるユニットをpdstop -zで停止し,STOP(A)になった原因を対策してから再度開始してください。
  6. 回復不要FESユニットが稼働しているのに,ネットワーク障害などでそのユニットのステータス情報がSTOP(A)になった場合,障害が回復してシステムマネジャからそのユニットに通信できるようになると,システムマネジャがそのユニットを自動的に強制停止してから再度開始します。ただし,システムマネジャからそのユニットに通信できるようになる前にユニットが停止した場合はシステムマネジャは強制停止及び再度開始をしません。停止しているユニットは,必要に応じてpdstartコマンドを実行してユニットを開始してください。なお,次の場合はそれぞれ状況に応じて対策してください。
    • 該当するユニットに対してエラーメッセージが表示されている場合
      ユニットを開始する前に,メッセージからエラー要因を調査し,対策してください。ユニットが停止している場合,システムログにKFPS01841-I又はKFPS01821-Eメッセージが表示されます。pdstartコマンド実行時,KFPS01853-W,KFPS01863-E,及びKFPS05619-Eメッセージは表示されません。
    • システムマネジャがユニットを再度開始する場合,起動処理に失敗してユニットが停止状態のままのとき
      メッセージから起動処理に失敗した原因を調査し,対策してください。その後,必要に応じて該当するユニットをpdstartコマンドで開始してください。
  7. 回復不要FESから分岐してバックエンドサーバやディクショナリサーバで実行しているトランザクションは,コミット決着時に分岐先のバックエンドサーバ及びディクショナリサーバ間で決着の同期合わせを行います。このため,同期合わせのときに,ほかのバックエンドサーバやディクショナリサーバがトランザクション処理を実行できない状態(系切り替え中,サーバ停止状態,サーバ開始準備中,又はサーバ停止準備中)になっていると,トランザクション第1状態がREADY又はCOMMITで待ち合わせを行うことがあります。この場合,トランザクション処理を実行できない状態になっている原因を該当するサーバで対策して,トランザクションの決着処理が続行できるようにしてください。
  8. 回復不要FES機能を使用するFESに接続して実行したトランザクションは,トランザクション第1状態,第2状態に関係なく,pdcmt,pdrbk,pdfgtコマンドを使用してトランザクションを強制的に終了できないことがあります。この場合,マニュアル「HiRDB Version 8 システム運用ガイド」の「未決着状態のトランザクションを決着する方法」を参照してトランザクションを自動決着させてください。