差分同期を利用して安定したシステムを構築するために、差分同期の仕組みを理解しておく必要があります。ここでは、差分同期の仕組みを説明します。
更新情報を取得する仕組みを説明します。
利用者プログラムが同期対象のデータファイルを更新することによって、自動的に設定されたトリガーが動作します。このトリガーが動作することによって、更新情報が更新情報ファイルに出力されます。
更新情報の取得を開始すると、トリガー機能が有効となります。更新情報の取得を停止すると、トリガー機能が無効となります。
同期対象のデータファイルにトリガーが作成されるタイミングやトリガー名は、"2.1.5 動作環境の構成"を参照してください。
なお、一括同期の場合、トリガー機能は使用されません。
差分同期で更新情報が取得、反映される動作を以下に示します。
図2.18 差分同期の動作
トリガー機能が動作しない状態では、更新情報が取得できません。この状態で、利用者プログラムから更新したデータは、差分同期を実行しても反映されません。
この場合、一括同期を行って復旧することが必要です。
トリガー機能が有効に働くDBMSの機能を使用して、データベースを運用してください。
本製品をアンインストールする場合、事前にレプリケーションの構成定義を削除してください。レプリケーションの構成定義を削除せず、本製品をアンインストールした場合、データファイルに作成されたトリガーが削除されません。
この場合、各DBMSのユーティリティを使用してトリガーを削除してください。
更新情報が取得および削除されるタイミングを説明します。
更新情報の取得
更新情報は、同期対象のデータファイルを更新した時点で作成され、更新情報ファイルに蓄積されます。
更新情報の削除
同期処理で相手サーバに反映された更新情報が削除されます。
マスタ側の更新情報
同期対象のマスタグループに関連づけたすべてのレプリカグループへの反映が完了した時点で削除されます。
レプリカ側の更新情報
同期対象のレプリカグループに関連づけたマスタグループへの反映が完了した時点で削除されます。
同期実行中のレプリケーショングループに対して、二重に同期を実行しようとした場合、後から実行した同期がエラーとなります。エラーとなった同期処理で反映しようとした更新情報は保持され、次回の同期実行で反映されます。
更新情報の取得を停止する場合、事前に同期を実行して、対象のレプリケーショングループすべてに更新情報を反映してください。
競合の解消
PowerReplicationは、競合を検出すると、マスタまたはレプリカのどちらか一方のデータを優先して競合の解消処理を行います。優先されないデータは破棄されます。
競合を解消する方法(競合解消ルール)には、以下の3つがあります。
競合を解消する処理を以下に示します。
図2.19 競合解消の処理
すべてNULL値(反映先データの主キー以外の選択項目がすべてNULL値の場合)
主キーが存在しない(一致する主キーの値が存在しない場合)
(*1)優先したマスタまたはレプリカが反映先に存在している場合に「自システム優先」となります。
(*2)優先したマスタまたはレプリカが反映元に存在している場合に「他システム優先」となります。
(*3)マスタグループまたはレプリカグループの定義で[削除データと NULL値を同等に扱う]を設定した場合にだけ発生します。
(*4)他システムでの更新結果が自システムに反映されないため、マスタとレプリカの間でデータが不一致の状態になります。ただし、運用形態が[共用]で[競合検出を行う]場合、競合の解消によって結果的にデータが一致することがあります。
競合が発生しないようにレプリケーションの運用を設計することが重要です。
レプリケーションの運用の設計方法は、"第3章 導入/構築"を参照してください。