スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)
HiRDB/パラレルサーバで高速系切り替え機能を使用する場合,又はスタンバイレス型系切り替え機能を使用する場合はトランザクションキューイング機能が使用できます。
バックエンドサーバ又はディクショナリサーバのユニットで系切り替えが発生すると,系の切り替えが完了するまでこのバックエンドサーバ又はディクショナリサーバはトランザクションを受け付けられない状態になります。そのため,系切り替え中のバックエンドサーバ又はディクショナリサーバで処理するトランザクションがエラーになります。
これらのトランザクションをエラーにしないで,系切り替えが完了するまでフロントエンドサーバでトランザクションをキューイングします。これをトランザクションキューイング機能といいます。これによって,系切り替え時のトランザクションエラーを少なくできます。トランザクションキューイング機能の概要を次の図に示します。
図26-82 トランザクションキューイング機能の概要
トランザクションキューイング機能を使用するには次の表に示すオペランドを指定します。
表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オペランドの関係
SQLの延長で生成されるトランザクションがキューイングの対象になります。ただし,定義系SQLの延長で生成されるトランザクション,及びホールダブルカーソル機能を使用したトランザクションは対象外です。次に示すトランザクションはキューイングの対象になりません。
ただし,タイミングによってはこれらのトランザクションがキューイングされることがあります。
トランザクションのキューイング時間は最大で,pd_ha_trn_queuing_wait_timeオペランドの値(省略値180秒)とpd_ha_trn_restart_retry_timeオペランドの値(省略値60秒)の合計時間になります。このため,次に示すオペランドの値に注意してください。
系の切り替えに掛かる時間は,クラスタソフトウェアがsyslogfileに出力する系切り替え開始メッセージと系切り替え完了メッセージの出力時刻の差分によって求められます。系の切り替えが開始したときは次に示すどれかのメッセージが出力されます。
系の切り替えが完了したときはKAMN311-Iメッセージが出力されます。
リストを使用した検索中に系切り替えが発生した場合は注意が必要です。バックエンドサーバ又はディクショナリサーバのユニットで系切り替えが発生すると,系切り替え前のユニットで作成したリストが削除されます。そのため,系切り替え後にリストを使用した検索(キューイングされていたトランザクション)がエラーになります。この場合,リストを削除するか,又はリストを再作成してください。
トランザクションのキューイング中は処理待ちのユーザ数が通常より多くなるため,最大同時接続数(pd_max_usersオペランドの値)を超える可能性があります。最大同時接続数を超えた場合,それ以上のユーザはそのフロントエンドサーバに接続できませんが,フロントエンドサーバへの接続処理をリトライします。pd_ha_trn_queuing_wait_timeとpd_ha_trn_restart_retry_timeオペランドの合計時間だけリトライします。
次に示す場合,系切り替え中にHiRDBに接続できないUAPが発生します。
この場合,UAPは自動再接続機能でHiRDBへの接続処理をリトライします。リトライ中に系の切り替えが完了すると,HiRDBに接続できるようになります。自動再接続機能については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。
バックエンドサーバ接続保持機能を使用している場合の注意事項については,「付録E.1(3)(c)クライアントの最大待ち時間の設定」を参照してください。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.