>> はじめに |
前回までは、主に複製の機能自体に関する確認をしてきました。SharePlexを使用していて、動作上問題なければそのまま運用を継続することが可能ですが、ソース側とターゲット側でテーブルの内容が同期していない状態になると、様々な問題を引き起こす可能性があります。
SharePlex自体は、そのような非同期状態が発生しないように、様々な仕組みを持っていますが、それ自体も例えば、ターゲット側で間違ってデータを更新してしまうなどの、人的ミスによる問題は避けられません。そこで今回は、SharePlexの持つデータを比較し、さらには間違いがあればそれを修復できる機能について、確認してみましょう。
>> 同期状態になっていない行の比較と修復を確認しよう |
まずは、非同期状態を確認する前に、同期状態での確認を行ってみます。これまでのテストと同様に、ソース側はSPLEX.DEMO_SRCというテーブルを使用し、ターゲット側はSPLEX.DEMO_DESTとして複製されたテーブルを使用します。
ソース側で、件数を確認しておきます。
|
同様に、ターゲット側でも件数を確認しておきます。
|
また、sp_ctrlのコンソールからqstatusコマンドにより、現在溜まっているキューがないことも確認しておきます。
|
ソース側の確認が終わったら、ターゲット側でも確認しておきます。
|
データの比較にはcompareコマンドを使用します。指定方法はいくつかあるのですが、ここでは特定のテーブルのみを指定する方法を使用し、ソース側からSPLEX.DEMO_SRCテーブルを指定しています。ターゲット側は異なるテーブル名ですが、その関連は現在アクティブな定義ファイルにより確認されますので、ターゲット側としてはSPLEX.DEMO_DESTが使用されます。
|
コマンド実行後は、compare statusを使用してステータスを確認します。
|
コマンドを実行して間もない際には、statusの詳細が"WaitMarker"等まだ、compareが完了していないことを示すステータスの場合もあります。多少時間をおいてから確認するとstatusが"In Sync"ということで、同期状態であることが確認できました。
|
>> 非同期状態を作り出して確認してみよう |
非同期の状態として可能性があるのは、ターゲット側を間違って更新してしまった場合も考えられます。ここでは、ターゲット側のデータを故意に変更して、確認してみます。
更新はなんでもよいのですが、以前使用したdemo.sqlスクリプトはNAME列を連番で更新しますので、その値を使用して更新してみます。たくさんの行がありますので、その中から3行だけ表示して、更新の目星をつけます。
|
次の例では、NAME列が'00000125'であるところに対して、PHONE#およびADDRESS列をすべて0に設定しています。該当する行が2つあったので、それらに対して更新されたはずです。
|
念のため、更新状況を確認しておきます。
|
今度は、同じ条件の行について、ソース側を確認すると、当然ながらPHONE#およびADDRESS列が異なっていますので、これにより非同期状態となっています。
|
>> 非同期状態を確認してみよう |
先ほどと同様にcompareコマンドを使用することで、非同期状態の確認が可能です。
|
compareコマンド実行後しばらく時間がたつと、compare statusによりstatus列がOut Syncであることが確認できました。
|
非同期な状態になった場合には、その詳細がターゲット側のvardir以下のlogディレクトリ内に記録されます。decltという文字列が入ったログは、compare機能により生成されたものになります。
|
また、同ディレクトリ内に、拡張子が".sql"になっているスクリプトが新規に生成されます。これは、compare実行時のソース側とターゲット側の差分内容になっており、このSQLスクリプトを適用することで、同期状態にすることも可能です。その他詳細が記録されていますので、同期状態の確認には、便利に使用が可能です。
|
>> repairコマンドにより非同期状態を修復 |
非同期状態を修復するには、repair機能を使用し、ソース側で対象となるテーブルを選択します。
|
正常に完了した場合には、statusとしてrepairedとなります。
|
念のためターゲット側で、前回確認したNAME列の値を使用して確認すると、確かに値が0ではなく、設定した値になっていることが確認できます。
|
>> まとめ |
SharePlexが持つcompareおよびrepair機能を中心に、簡単な動作の流れを確認していただきました。DDLの複製を除いて、基本的な動作確認は以上になります。
次回はSharePlexが持つ機能について少し整理させていただく予定です。