スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)

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

26.20 トランザクションキューイング機能

HiRDB/パラレルサーバで高速系切り替え機能を使用する場合,又はスタンバイレス型系切り替え機能を使用する場合はトランザクションキューイング機能が使用できます。

<この節の構成>
(1) トランザクションキューイング機能とは
(2) 環境設定方法
(3) キューイングの対象になるトランザクション
(4) 注意事項

(1) トランザクションキューイング機能とは

バックエンドサーバ又はディクショナリサーバのユニットで系切り替えが発生すると,系の切り替えが完了するまでこのバックエンドサーバ又はディクショナリサーバはトランザクションを受け付けられない状態になります。そのため,系切り替え中のバックエンドサーバ又はディクショナリサーバで処理するトランザクションがエラーになります。

これらのトランザクションをエラーにしないで,系切り替えが完了するまでフロントエンドサーバでトランザクションをキューイングします。これをトランザクションキューイング機能といいます。これによって,系切り替え時のトランザクションエラーを少なくできます。トランザクションキューイング機能の概要を次の図に示します。

図26-82 トランザクションキューイング機能の概要

[図データ]

注※
スタンバイレス型系切り替え機能の場合は次に示すようになります。
  • 正常時は正規BESユニットが実行系になり,代替部が待機系になります。
  • 代替中は代替部が実行系になり,正規BESユニットが待機系になります。

〔説明〕
バックエンドサーバのユニットに障害が発生して系を切り替えます。待機系ユニットが起動完了するまで,トランザクションをキューイングします。待機系ユニットが起動完了した後にトランザクションを開始します。

備考
  • 系を切り替えていない(障害が発生していない)ユニットで実行されるトランザクションはキューイングされません。通常どおり実行されます。
  • マルチフロントエンドサーバを使用すると,フロントエンドサーバのユニットで系切り替えが発生した場合,トランザクションエラーを少なくできます。この場合,障害が発生したときに実行中のトランザクションだけがエラーになります。

(2) 環境設定方法

トランザクションキューイング機能を使用するには次の表に示すオペランドを指定します。

表26-57 トランザクションキューイング機能を使用するときに指定するオペランド

オペランド名 説明
pd_ha_agent 高速系切り替え機能,1:1スタンバイレス型系切り替え機能,又は影響分散スタンバイレス型系切り替え機能を使用する場合に指定します。
standbyunit:高速系切り替え機能を使用します。
server:1:1スタンバイレス型系切り替え機能を使用します。
activeunits:影響分散スタンバイレス型系切り替え機能を使用します。
pd_ha_transaction トランザクションキューイング機能を使用するかどうかを指定します。
クライアント環境定義のPDHATRNQUEUINGオペランドにNOを指定すると,そのHiRDBクライアントが実行するUAPはトランザクションキューイング機能の対象外になります。PDHATRNQUEUINGオペランドについては,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。
pd_ha_trn_queuing_wait_time トランザクションのキューイング待ち時間を指定します。このオペランドに指定した待ち時間を超えても待機系ユニットが起動しない場合,キューイング中のトランザクションをエラーにします。これ以降発生するトランザクションはキューイングされないでエラーになります。
pd_ha_trn_restart_retry_time トランザクションキューイング機能使用時に系切り替えが発生すると,トランザクションをフロントエンドサーバでキューイングします。しかし,系切り替えが発生してから待機系ユニットが再開始するまでの間,フロントエンドサーバは系切り替えを検知できません。この間(系切り替えが発生してから待機系ユニットが再開始するまでの間),フロントエンドサーバは実行系ユニットに対してトランザクションの開始要求をしますが,実行系ユニットは既に異常終了しているため,このトランザクション開始要求はエラーになります。エラーになったトランザクションはフロントエンドサーバから開始要求が再度行われます(トランザクションの開始要求をリトライします)。
このオペランドには,このリトライ時間の上限を指定します。このオペランドの値を超えても待機系ユニットが再開始されない場合は,リトライ中のトランザクションをエラーにします。また,これ以降発生するトランザクションはリトライされないでエラーになります。
pd_ha_trn_queuing_wait_timeオペランドとpd_ha_trn_restart_retry_timeオペランドの関係を図26-83に示します。

図26-83 pd_ha_trn_queuing_wait_timeオペランドとpd_ha_trn_restart_retry_timeオペランドの関係

[図データ]

注※
スタンバイレス型系切り替え機能の場合は次に示すようになります。
  • 正常時は正規BESユニットが実行系になり,代替部が待機系になります。
  • 代替中は代替部が実行系になり,正規BESユニットが待機系になります。

〔説明〕
区間A,D:
トランザクションを開始できる状態です(正常な状態です)。
区間B:
バックエンドサーバのユニットが系切り替え中で,フロントエンドサーバがそれを検知できていない状態です。pd_ha_trn_restart_retry_timeオペランドに指定した時間までトランザクション開始要求をリトライします。フロントエンドサーバが系の切り替えを検知すると,トランザクションがキューイングされます。指定した時間を過ぎても検知できない場合は,そのトランザクションをエラーにします。
区間C:
バックエンドサーバのユニットが系切り替え中で,フロントエンドサーバがそれを検知している状態です。pd_ha_trn_queuing_wait_timeオペランドに指定した時間までトランザクションをキューイングします。指定した時間を過ぎてもトランザクションを開始できない場合は,そのトランザクションをエラーにします。

(3) キューイングの対象になるトランザクション

SQLの延長で生成されるトランザクションがキューイングの対象になります。ただし,定義系SQLの延長で生成されるトランザクション,及びホールダブルカーソル機能を使用したトランザクションは対象外です。次に示すトランザクションはキューイングの対象になりません。

ただし,タイミングによってはこれらのトランザクションがキューイングされることがあります。

(4) 注意事項

(a) 時間監視関連のオペランドについて

トランザクションのキューイング時間は最大で,pd_ha_trn_queuing_wait_timeオペランドの値(省略値180秒)とpd_ha_trn_restart_retry_timeオペランドの値(省略値60秒)の合計時間になります。このため,次に示すオペランドの値に注意してください。

系の切り替えに掛かる時間は,クラスタソフトウェアがsyslogfileに出力する系切り替え開始メッセージと系切り替え完了メッセージの出力時刻の差分によって求められます。系の切り替えが開始したときは次に示すどれかのメッセージが出力されます。

系の切り替えが完了したときはKAMN311-Iメッセージが出力されます。

(b) リスト使用時の注意事項

リストを使用した検索中に系切り替えが発生した場合は注意が必要です。バックエンドサーバ又はディクショナリサーバのユニットで系切り替えが発生すると,系切り替え前のユニットで作成したリストが削除されます。そのため,系切り替え後にリストを使用した検索(キューイングされていたトランザクション)がエラーになります。この場合,リストを削除するか,又はリストを再作成してください。

(c) 最大同時接続数(pd_max_usersオペランドの値)について

トランザクションのキューイング中は処理待ちのユーザ数が通常より多くなるため,最大同時接続数(pd_max_usersオペランドの値)を超える可能性があります。最大同時接続数を超えた場合,それ以上のユーザはそのフロントエンドサーバに接続できませんが,フロントエンドサーバへの接続処理をリトライします。pd_ha_trn_queuing_wait_timeとpd_ha_trn_restart_retry_timeオペランドの合計時間だけリトライします。

(d) 系切り替え中にHiRDBに接続できないUAPについて

次に示す場合,系切り替え中にHiRDBに接続できないUAPが発生します。

この場合,UAPは自動再接続機能でHiRDBへの接続処理をリトライします。リトライ中に系の切り替えが完了すると,HiRDBに接続できるようになります。自動再接続機能については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

(e) バックエンドサーバ接続保持機能を使用している場合

バックエンドサーバ接続保持機能を使用している場合の注意事項については,「付録E.1(3)(c)クライアントの最大待ち時間の設定」を参照してください。