Syniti DRは異種データベース間でのレプリケーションを提供するソリューションであり、データ連携や移行、保護など様々な用途でご利用いただいています。
このSyniti DRでレプリケーションしデータを同期している際に、例えば
- 移行用途であれば、正常に全データが転送され、同期が取れていることを確認したい
- 連携や保護で使用している場合には変更追跡方式によっては検出できないようなトランザクション(REDOログへの記録をパフォーマンスのためにオフにしているなど)に関しても反映したい
- 検証環境に連携している場合に、ターゲットテーブルに対してのみ実施された変更を定期的に修正したい
などの要望をいただくことがあります。このような際に便利な機能が、結果比較です。結果比較機能では以下のようなことが可能です。
GUI上での結果比較
GUI上ではSyniti DRのコンソールから任意のレプリケーションを右クリックし、「レプリケーション結果を確認する」から結果比較を実施し、差異があるか確認できます。
左上の各ボタンから以下の操作が可能です。
比較の実行 ソーステーブルとターゲットテーブルを比較します。比較結果は表とテキストで表示されます。 | |
停止 比較処理を停止します。テーブルのサイズが大きく予期せぬ時間が比較にかかっている場合などに使用します。 | |
データの整合 比較の実行後、検出された差異を解消するよう、ソーステーブルを基にターゲットテーブルを変更します。 | |
結果の保存 表と下部に表示されているテキストの情報をテキストファイルに保存します。 | |
オプション 比較時の条件等を指定できるオプション設定を開きます。 |
オプション
オプションに関しても詳しく紹介していきます。まず、設定項目として、タブ以外の部分を解説します。
カウントのみ記録 | テーブル内のデータは比較せず、単純にレコード件数のみを比較します。この場合、各タブの設定はグレイアウトし利用できません。 |
WHERE条件 | ソーステーブルとターゲットテーブルを比較のためにSelectする際のWHERE句を設定できます。レコード数が多いテーブルなどで、一部のみ比較したい場合に有効です。 |
ORDER BY句 | デフォルトではORDERBY句は、主キーです。 ただし、データベースにより、文字列の並び替え順序が異なる場合があり、これが原因で正常に比較できないケースが有ります。 このフィールドで、単一の列名またはコンマ区切りの列名のリストを入力することにより、デフォルトのORDERBY句から変更できます。 |
このオプション画面で設定した項目は、GUI上でのみの設定である一般タブの内容を除き、「メタデータに設定を適用」で比較を定期的に実施する検証スケジュールでの設定にも反映できます。
レプリケーションの続いて各タブの設定を紹介していきます。
一般
具体的な比較処理には影響しませんが、GUI上での表示を設定するためのタブです。
自動的に検証を実行 | 「レプリケーション結果を確認する」 で検証タブを開いた際に自動的に比較を実行するための設定です。 |
グリッドないのソースとターゲットテーブルを表示 | 表を表示せず、結果のテキストのみ表示する設定です。大量のレコードを持つテーブルを検証する場合には有効します。 |
比較の最大数 | 表示するレコード数の上限設定です。表示のためにもメモリ、CPUリソースを消費しますのでそれに合わせて設定します。デフォルトは10,000です。 |
差異のみを表示 | 異なるデータを持つカラムを含むレコードと片方にしか存在しないレコードのみを表示します。 |
色 | 差異を強調表示する際の色を変更できます。 |
比較
比較対象とするカラムを指定できます。
主キーのみ確認 | 主キーなっているカラムのみ比較します。この場合、データの整合は利用できなくなります。 |
ピボット列で確認 | 比較するレコードのフィルタリングに使用する列(日付、時刻またはタイムスタンプのみ)を指定します。指定した列で、比較時にwhere句が作成され、ターゲットテーブルよりも新しいレコードのみが比較されます。 |
列のサブセットで比較 | チェックした列のみで比較を行います。主キーではデフォルトで含まれており除外できません。 |
データタイプ
データ型に基づき比較対象を制限できます。
BLOB/CLOBをスキップ/無視 | BLOB/CLOB列のデータはサイズが大きく比較に時間がかかる可能性がるため、これらの列を比較しないように設定できます。 |
バイト型配列をスキップ/無視 | 同様にバイト配列フィールドを比較しないように設定できます。 |
空白文字 | データベースやデータ型によって文字列を埋めるために空白スペースを用いるものと用いないものが有ります。このオプションを有効にすると固定長文字列から空白文字をトリミングした後に比較します。 |
日時をスキップ/無視 | Date time型を比較しないように設定できます。データベースによって格納されている形式に違いがあるケースが存在するためです。 |
時刻をスキップ/無視 | Time型を比較しないように設定できます。データベースによって格納されている形式に違いがあるケースが存在するためです。 |
小数点以下の桁数 | 少数点以下で比較する桁数を設定できます。 |
データ整合操作
ソーステーブルのデータに基に、ターゲットテーブルのデータを修正する際の操作の種類を指定できます。
Inserts | ソーステーブルにのみ存在するレーコードをターゲットテーブルに挿入します。 |
Deletes | ターゲットテーブルにのみ存在するレコードを削除します。 |
Updates | 異なるデータを持つフィールドを、ソーステーブル上の値に更新します。 |
スケジュールで定期的に結果比較を実施
続いては、上記の比較検証や整合操作をスケジュールで実行する方法です。定期的なバッチ実行などで、ソースDB上のトランザクションログに記録されないようなケースでそれを定期的に反映する用途やソーステーブルに一致した状態であることを定期的に保証するために利用できます。
スケジュール自体の構成は他のスケジュール設定と同様に繰り返しの設定を複数構成することも可能です。ここで「データを整合させる」にチェックを入れると差異があった際にはソーステーブルを基にターゲットテーブルを変更します。
また、GUIでの比較時と同様の設定が優先>検証から設定可能です。
また、設定したのみでは実行されないため、Verifier SchedulerをタスクトレイService Monitorアイコンから起動しておきます。
また、アラート設定で差異が検出された場合にメール送付するよう設定することも可能です。
このように、念のためソースとターゲットが一致しているのか確認したいといった要望や変更追跡できないようなデータもターゲットに反映したいといった要件などにも対応できる機能になっておりますので、メインの機能であるレプリケーションに加えて、この比較検証機能も是非ご活用ください。
関連したトピックス
- DBMotoでのBLOB・CLOBデータタイプのレプリケーションサポートについて
- DBMotoのレプリケーション結果比較確認機能で整合性チェック&データ修復
- イニシャル・リフレッシュを行った時のリフレッシュとミラーリングでのトランザクション管理【DBMoto】
- レプリケーションモニター、履歴ビューアの使い方[Syniti DR]
- MySQLを最適化するための10の秘訣
- 多様な変更追跡で様々環境、要件に対応、Oracleトランザクションセットアップ[Syniti Data Replication]
- APIからレプリケーション結果の検証やデータ整合を実行するサンプルスクリプト[C#] [Syniti DR (DBMoto)]
- 運用でのリカバリ方法(SQLServer)【リアルタイムレプリケーションツールDBMoto】
- サプリメンタルロギング設定の影響に関して[Syniti DR]
- 初期同期(リフレッシュ)がより便利に! ステージングリフレッシュ機能