6.6.5 DBキュー読み出しサーバ変更機能の運用
DBキューからメッセージを読み出すサーバを変更する場合の運用方法について説明します。
- 〈この項の構成〉
(1) 読み出し先DBキューのステータス
読み出し先DBキューのステータスとは,DBキューからメッセージを読み出すサーバを示す情報です。この情報は,DBキュー読み出しサーバを変更する際の判断基準となります。
(a) 読み出し先DBキューのステータスの種類
読み出し先DBキューのステータスには,次の3種類があります。
-
自サーバ読み出し
自システムのサーバで,DBキューからメッセージを読み出す状態のことです。
-
他サーバ読み出し
自システム以外のサーバで,DBキューからメッセージを読み出す状態のことです。
-
なし
DBキューからメッセージを読み出すサーバが存在しない状態のことです。
- 注意事項
-
「自サーバ読み出し」と「他サーバ読み出し」のステータスは,相対的な関係にあります。例えば,次に示す図では,読み出しサーバ変更後のDBキューのステータスは,サーバ1側から見た場合は「他サーバ読み出し」となり,サーバ2側から見た場合は「自サーバ読み出し」となります。
(b) 読み出し先DBキューのステータスの変更
読み出し先DBキューのステータスは,次に示すタイミングで「自サーバ読み出し」に変更されます。
-
DBキュー機能関連定義のdbqgrpdef定義コマンドの-oオプションにmy(自サーバ読み出し)を指定したTP1/EE(読み出しサーバ)が正常開始したとき
-
eedbqchgrコマンドを実行して読み出しサーバを変更したとき
(2) TP1/EEの開始モードと読み出し先DBキューのステータスの遷移
TP1/EE(DBキュー読み出しサーバ)の開始モードと,読み出し先DBキューのステータスの遷移を次の表に示します。
項番 |
TP1/EEの開始モード |
dbqgrpdef定義コマンドの-oオプションの指定値 |
読み出し先DBキューのステータス |
|
---|---|---|---|---|
サーバ開始前 |
サーバ開始時 |
|||
1 |
正常開始または強制正常開始 |
my(自サーバ読み出し) |
なし |
自サーバ読み出し |
2 |
自サーバ読み出し |
自サーバ読み出し |
||
3 |
他サーバ読み出し (読み出しサーバがTP1/EEの場合) |
自サーバ読み出し |
||
4 |
他サーバ読み出し (読み出しサーバがTP1/EE以外の場合) |
他サーバ読み出し※1 |
||
5 |
other(他サーバ読み出し) |
なし |
なし |
|
6 |
自サーバ読み出し |
なし |
||
7 |
他サーバ読み出し |
他サーバ読み出し |
||
8 |
再開始 |
my(自サーバ読み出し) |
なし |
なし※2 |
9 |
自サーバ読み出し |
自サーバ読み出し |
||
10 |
他サーバ読み出し |
他サーバ読み出し |
||
11 |
other(他サーバ読み出し) |
なし |
なし |
|
12 |
自サーバ読み出し |
自サーバ読み出し |
||
13 |
他サーバ読み出し |
他サーバ読み出し |
(3) 読み出し先DBキューのステータスの遷移例
読み出し先DBキューのステータスの遷移例について説明します。
(a) 「自サーバ読み出し」のステータスで自サーバが正常終了する場合
「自サーバ読み出し」のステータスで自サーバが正常終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
(b) eedbqchgrコマンドを実行して読み出しサーバを変更する場合
eedbqchgrコマンドを実行して読み出しサーバを変更する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
-
サーバ1を正常開始します。
dbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは「自サーバ読み出し」になります(表6-18の項番1)。
-
サーバ1でDBキュー1からメッセージを読み出します。
-
サーバ2でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをDBキュー2に変更します。
DBキュー1のステータスは「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)に変更されます。
-
サーバ1を正常終了します。
-
サーバ2でDBキュー1からメッセージを読み出します。
-
サーバ1を再度正常開始します。
dbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは「自サーバ読み出し」に変更されます(表6-18の項番3)。
(c) 「他サーバ読み出し」のステータスで他サーバが正常終了する場合
「他サーバ読み出し」のステータスで他サーバが正常終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
-
サーバ1を正常開始します。
dbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは「自サーバ読み出し」になります(表6-18の項番1)。
-
サーバ1でDBキュー1からメッセージを読み出します。
-
サーバ2でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ2に変更します。
DBキュー1のステータスは「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)に変更されます。
-
サーバ2でDBキュー1からメッセージを読み出します。
-
サーバ2を正常終了します。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバを割り当てます。
DBキュー1のステータスは「自サーバ読み出し」に変更されます。
(d) 「自サーバ読み出し」のステータスで,正常開始時に「他サーバ読み出し」を指定する場合
「自サーバ読み出し」のステータスで,正常開始時に「他サーバ読み出し」を指定する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
-
サーバ2を正常開始します。
サーバ2でdbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは,サーバ1側から見た場合は「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)になります(表6-18の項番1)。
-
サーバ2でDBキュー1からメッセージを読み出します。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ1に変更します。
DBキュー1のステータスは「自サーバ読み出し」に変更されます。
-
サーバ1でDBキュー1からメッセージを読み出します。
-
サーバ1を正常終了します。
-
サーバ1を再度正常開始します。
dbqgrpdef定義コマンドの-oオプションにotherを指定することで,DBキュー1のステータスは「なし」に変更されます(表6-18の項番6)。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバを割り当てます。
DBキュー1のステータスは「自サーバ読み出し」に変更されます。
(e) DBキューのステータスを変更する前に自サーバが計画停止Bまたはプロセスダウンで終了する場合
DBキューのステータスを変更する前に自サーバが計画停止Bまたはプロセスダウンで終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
-
サーバ1を正常開始します。
-
DBキュー1のステータスを変更する前に,サーバ1が計画停止Bまたはプロセスダウンで終了します。
DBキュー1のステータスは「なし」のままとなります。
-
サーバ1を再開始します。
dbqgrpdef定義コマンドの-oオプションにmyを指定していますが,DBキュー1のステータスは「なし」のままとなります(表6-18の項番8)。
DBキュー1のステータスが「なし」である状態が続いた場合,DBキュー機能関連定義のdbq_readcheckmsg_intervalオペランドに指定した間隔で,KFSB45612-Wメッセージが出力されます。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバを割り当てます。
DBキュー1のステータスは「自サーバ読み出し」に変更されます。
(f) 自サーバが計画停止Bまたはプロセスダウンで終了し,他サーバが正常終了する場合
自サーバが計画停止Bまたはプロセスダウンで終了し,他サーバが正常終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
-
サーバ2を正常開始します。
サーバ2でdbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは,サーバ1側から見た場合は「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)になります(表6-18の項番1)。
-
サーバ2でDBキュー1からメッセージを読み出します。
-
サーバ1が計画停止Bまたはプロセスダウンで終了します。
-
サーバ2を正常終了します。
-
サーバ1を再開始します。
dbqgrpdef定義コマンドの-oオプションにmyを指定していますが,DBキュー1のステータスは「他サーバ読み出し」のままとなります(表6-18の項番10)。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ1に変更します。
DBキュー1のステータスは「自サーバ読み出し」に変更されます。
(4) DBキュー読み出しサーバが複数ある場合
DBキューからのメッセージの読み出し処理中にeedbqchgrコマンドを実行すると,二つのサーバが同一のメッセージを読み出すおそれがあります。この現象を回避するために,DBキュー読み出しサーバが複数ある場合,TP1/EEは,最初にコミットしたメッセージ読み出しトランザクションを優先し,その他のサーバのメッセージ読み出しトランザクションをロールバックします。
DBキュー読み出しサーバが複数ある場合の処理の流れを次の図に示します。
-
サーバ2を正常開始します。
サーバ2でdbqgrpdef定義コマンドの-oオプションにmyを指定しておきます。
-
サーバ2で,DBキュー1のメッセージ読み出しトランザクションを開始します。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ1に変更します。
-
サーバ1で,DBキュー1のメッセージ読み出しトランザクションを開始します。
-
サーバ1で,メッセージ読み出しトランザクションがコミットします。
コミット後,未読み出しメッセージがなくなるまでメッセージ読み出しトランザクションを繰り返し起動します。
-
サーバ2で,メッセージ読み出しトランザクションをロールバックします。