3.6.2 反映トランザクション同期機能の準備
- 〈この項の構成〉
(1) 前提条件
反映トランザクション同期機能は,抽出側システム及び反映側システムが,どちらもDatareplicatorの場合にだけ使用できます。
この機能を使用するためには,次の条件をすべて満たす必要があります。
-
抽出側HiRDBのバージョンが07-03以降で,かつパラレルサーバである。
-
抽出側Datareplicatorのバージョンが07-04以降である。
-
反映側Datareplicatorのバージョンが07-04以降である。
なお,次に示すOSのどれかを使用している場合,反映側HiRDBのバージョンは07-03以降である必要があります。
-
HP-UX(IPF)
-
Linux(IPF)
-
Windows
また,HiRDB Datareplicator Extensionを使用するシステムでは,XAインターフェースを使用できないため,グローバルトランザクション単位でのデータの整合性は保証できません。
(2) システム構成
(a) 抽出側システムのバックエンドサーバと反映側システムのデータ連動識別子との対応
この機能を使用する場合,抽出側HiRDBのバックエンドサーバごとに対応するデータ連動識別子を用意します。このとき,データ連動識別子は同期反映グループとしてまとめておく必要があります。また,イベント制御用テーブル(hde_dtbl)を抽出対象のバックエンドサーバに配置しておきます。
反映トランザクション同期機能を使用する場合の構成例を,次の図に示します。
なお,一つの抽出側HiRDBから抽出するグローバルトランザクションは,一つの反映側システムで受信する必要があります。このため,データ連動対象の表を配置するバックエンドサーバ数の最大は,一つの反映側Datareplicatorで受信できる最大数となります(反映側システムがUNIXの場合は128,Windowsの場合は63)。
抽出対象外のバックエンドサーバについては,グローバルトランザクションの対象になりません。次の図に示すように,抽出対象外のバックエンドサーバに対応したデータ連動識別子を同期反映グループにすると,同期を待ち続けるため,反映処理が進まなくなります。
(b) 抽出側システムと反映側システムの構成
この機能を使用する場合,一つの反映側システムで受信できるグローバルトランザクションは一つだけです。また,一つの反映側システムで,グローバルトランザクションと非グローバルトランザクションを混在して受信できます。構成例を次の図に示します。
- 説明
-
抽出側システム1からグローバルトランザクションを,抽出側システム2から非グローバルトランザクションを,一つの反映側システムに送信します。
また,一つのグローバルトランザクションを複数の送信先識別子に送信することもできます。グローバルトランザクションの送信の有無は,送信先識別子ごとに指定できます。構成例を次の図に示します。
- 説明
-
一つの抽出側システムから,複数の反映側システムにグローバルトランザクション及び非グローバルトランザクションを送信します。
次の図に示すように,一つの送信先識別子のセットを複数の反映側システムへ分散する構成にはできません。このような構成の場合,同期は保証しません。
(3) 指定するオペランド
反映トランザクション同期機能を使用する際に指定しておく必要があるオペランドを次の表に示します。
PP |
定義ファイル |
オペランド |
説明 |
---|---|---|---|
HiRDB |
システム共通定義 |
pd_rpl_reflect_mode = uap※1 |
トランザクションブランチ情報(Datareplicatorがこの機能を実現するために必要な情報)を,システムログファイルへ出力するためのオペランドです。詳細については,マニュアル「HiRDB システム定義」を参照してください。 |
Datareplicator |
反映システム定義 |
syncgroup001※2 |
同期反映グループを構成するためのオペランドです。 |
送信環境定義 |
reflect_mode = uap※3 |
トランザクションブランチ情報を,反映側Datareplicatorへ送信するためのオペランドです。 |
|
eventsync |
同期イベント(同期反映グループがCOMMITを発行する契機となるイベント)の番号を指定します。 |
- 注※1
-
データ連動中に指定値をuapからserver,又はserverからuapに変更すると,反映処理実行時にKFRB03312-Eメッセージが出力されて,反映処理は停止します。また,トランザクションブランチ情報は送信されなくなります。回避するためには,同期反映グループを解除して再起動する必要があります。
- 注※2
-
トランザクションブランチ情報を送信する状態でsyncgroup001オペランドが定義されていないと,KFRB02066-Wメッセージが出力されて,非同期で反映が行われます。トランザクションブランチ情報を送信しない状態でsyncgroup001オペランドが定義されていると,ポートチェックエラー(詳細コード=26)になります。
- 注※3
-
HiRDBのpd_rpl_reflect_modeオペランドの指定値がserverの場合は,reflect_modeオペランドにuapを指定しても,hdestartコマンド実行時にエラーとなり,KFRB00726-Eメッセージが出力されます。
また,reflect_modeオペランドにuapを指定する場合は,送信環境定義のoverwriteオペランドにfalseを指定してください。false以外を指定すると,KFRB00846-Eメッセージが出力されてエラーになります。