9.1.4 回復不要FES
フロントエンドサーバがあるユニットで障害が発生して異常終了すると,そのフロントエンドサーバから実行していたトランザクションは未決着状態になることがあります。未決着状態のトランザクションは,データベースの排他を確保しているため,一部のデータベースに対する参照又は更新が制限されます。通常,未決着状態のトランザクションの決着処理をするためには,フロントエンドサーバの障害を取り除いて再開始する必要がありますが,異常終了したフロントエンドサーバが回復不要FESであれば,HiRDBが自動的に未決着状態になっていたトランザクションを決着します。これによって,ほかのフロントエンドサーバやバックエンドサーバを使用して,データベースの更新を再開できます。回復不要FESがあるユニットを回復不要FESユニットといいます。回復不要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) 設定方法
回復不要FESを使用するには,pdstartオペランドの-kオプションにstlsを指定します。
(2) 注意事項
-
HiRDBを起動する場合に回復不要FESユニットが開始しないとき,HiRDBはpd_start_levelオペランドの指定値に関係なく,そのユニットを除いてHiRDBを開始します。すべてのフロントエンドサーバを回復不要FESにする場合,一つ以上のフロントエンドサーバが開始しないとHiRDBシステムの起動は完了しません。
-
回復不要FESユニットは独自に縮退起動をするため,pd_start_skip_unitオペランドに回復不要FESユニットの名称を指定しても無視します。
-
回復不要FESユニットが異常終了した場合,フロントエンドサーバ及びユニットのステータス情報はSTOP(A)になりますが,通常のSTOP(A)とは異なり,pdstopコマンドでHiRDBのシステムマネジャとほかのユニットを正常停止,又は計画停止できます。また,回復不要FESユニットを強制停止した場合,フロントエンドサーバ及びユニットのステータス情報はSTOP(F)になりますが,pdstopコマンドでHiRDBのシステムマネジャとほかのユニットを正常停止,又は計画停止できます。
-
回復不要FESユニットは,次の場合以外,常に正常開始でユニットを開始します。
-
ユニットを正常終了以外で停止していて,かつ前回稼働時にpdstartオペランドの-kオプションにstlsを指定していなかった場合
-
-
回復不要FESユニットのステータス情報がSTOP(A)になっていると,その回復不要FESにCONNECTしたUAPからのSQL要求をHiRDBが受け付けなくなります。この場合,KFPS01820-Eメッセージに表示される回復不要FESのプロセス終了状態は「c800」になります。また,SQLで操作しようとしたデータを持つバックエンドサーバやディクショナリサーバなどのサーバプロセスの終了状態は,KFPS01820-Eメッセージに「c900」と表示されることがあります。KFPS01820-Eメッセージが表示された場合,プロセス終了状態が「c800」と表示されたフロントエンドサーバがあるユニットをpdstop -zで停止し,STOP(A)になった原因を対策してから再度開始してください。
-
回復不要FESユニットが稼働しているのに,ネットワーク障害などでそのユニットのステータス情報がSTOP(A)になった場合,障害が回復してシステムマネジャからそのユニットに通信できるようになると,システムマネジャがそのユニットを自動的に強制停止してから再度開始します。自動的に強制停止してから再度開始する契機を次に示します。
-
ユニットの稼働状況を監視するユニット監視プロセスが,ステータス情報がSTOP(A)となった回復不要FESユニットが稼働中であることを確認し,KFPS05288-Iメッセージが出力されたとき
-
システムマネジャがあるユニットが再度開始する際に全ユニットの稼働状況を確認し,ステータス情報がSTOP(A)となった回復不要FESユニットが稼働中であることを確認したとき
自動的に強制停止してから再度開始する処理が行われた場合,回復不要FESユニットでKFPS05110-Iメッセージが出力されていることを確認してください。このメッセージが出力されていれば,回復不要FESユニットの起動処理が正常に終了しています。自動的に強制停止し,再度開始する契機が発生してから,システム共通定義のpd_system_complete_wait_timeオペランドに指定した時間が経過してもKFPS05110-Iメッセージが出力されない場合,起動処理が正常に終了していません。この場合の対処方法を次に示します。
(1)システムマネジャがあるユニット,及びディクショナリサーバがあるユニットの稼働状態をpdls -d ustコマンドで確認します。
それらのユニットが稼働していない場合,pdstartコマンドで開始します。
それらのユニットが稼働している場合,又はそれらのユニットを開始してもKFPS05110-Iメッセージが出力されない場合,(2)の対処をします。
(2)回復不要FESユニットの稼働状態をpdls -d ustコマンドで確認し,実行結果に応じて,次に示す対処をします。
回復不要FESユニットの稼働状態(pdls -d ustコマンドの実行結果)
対処方法
STOP(停止状態)
pdstart -qコマンドを実行して,回復不要FESユニットを再開始してください。
PAUSE(プロセスサーバプロセスの再起動中断状態)
-
KFPS00715-Eメッセージ,及びそれ以前にsyslogfileに出力されたメッセージを参照して,障害要因を取り除いた後,pdrpauseコマンドを実行してください。
-
pdstart -qコマンドを実行して,回復不要FESユニットを再開始してください。
STARTING(開始途中)
-
pdstop -zコマンドを実行して,回復不要FESユニットを強制終了してください。
-
pdstart -qコマンドを実行して,回復不要FESユニットを再開始してください。
ONLINE(稼働状態)
STOPPING(停止途中)
なお,システムマネジャからそのユニットに通信できるようになる前にユニットが停止した場合は,システムマネジャは強制停止及び再度開始をしません。
-
-
回復不要FESから分岐して,ほかのサーバで実行しているトランザクションは,コミット決着時に分岐先のサーバ間で決着の同期合わせを行います。このため,同期合わせのときに,分岐先サーバのどれかがトランザクション処理を実行できない状態(系切り替え中,サーバ停止状態,サーバ開始準備中,又はサーバ停止準備中)になっていると,トランザクション第1状態がREADY又はCOMMITで待ち合わせを行うことがあります。この場合,トランザクション処理を実行できない状態になっている原因を該当するサーバで対策して,トランザクションの決着処理が続行できるようにしてください。
-
回復不要FES機能を使用するFESに接続して実行したトランザクションは,トランザクション第1状態,第2状態に関係なく,pdcmt,pdrbk,pdfgtコマンドを使用してトランザクションを強制的に終了できないことがあります。この場合,マニュアル「HiRDB Version 9 システム運用ガイド」の「未決着状態のトランザクションを決着する方法」を参照してトランザクションを自動決着させてください。