LiveCompare#
LiveCompareは、任意の数のデータベースを比較して、それらが同一であることを確認するように設計されています。このツールはデータベースを比較し、比較レポート、相違点のリスト、および便利なDMLスクリプトを生成するため、オプションでDMLを適用して、データベースの不一致を修正できます。
デフォルトでは、比較セットにはデータベース内のすべてのテーブルが含まれます。 LiveCompareでは、複数のテーブルマルチプルのワーカープロセスを同時にチェックでき、高度な構成が可能であるため、いくつかのテーブル、またはテーブル内の行のセクションのみをチェックできます。
各データベースの比較は、 比較セッション と呼ばれます。プログラムが初めて起動すると、新しいセッションが開始され、テーブルごとの比較が開始されます。スタンドアロンモードでは、すべてのテーブルが比較されると、プログラムは停止し、すべてのレポートを生成します。コンテキスト情報を失うことなくLiveCompareを開始および停止できるため、都合の良いときに実行できます。
各テーブル比較操作は 比較ラウンド と呼ばれます。テーブルが大きすぎる場合、LiveCompareはテーブルを複数の比較ラウンドに分割し、これらも並列実行され、他のワーカーによって同時に実行されている他のテーブルと並行して実行されます。
スタンドアロンモードでは、テーブルの最初の比較ラウンドは、テーブルの先頭最も古い既存のPKからテーブルの最後に新しい既存のPKまで開始します。ラウンドの開始後に挿入された新しい行は無視されます。
LiveCompareはPK列をソートして、各テーブルから最小および最大PKを取得します。ソート不可のPK列ごとに、LiveCompareはそのコンテンツをstring
にキャストします。 PostgreSQLでは、::text
を使用してこれを実現します。 Oracleでは、to_char を使用します。
比較アルゴリズムを実行する場合、各ワーカーにはN+1のデータベース接続が必要です。Nは、比較されるデータベースの数です。追加で必要な接続は、出力/レポートデータベースへの接続であり、プログラムキャッシュも保持され、比較セッションを停止および再開できます。
比較アルゴリズムによって見つかった差異は、後の都合の良いときに手動で再チェックできます。レプリケーションの一貫性チェックを可能にするためにこれを行うことをお勧めします。差分が再チェックされると、レプリケーションがその特定の行に追いついた可能性があり、差分はもう存在しないため、差分は削除されます。それ以外の場合は、永続的としてマークされます。
実行の最後に、プログラムはDMLスクリプトを生成するため、それを確認して、違いを1つずつ修正できます。または、DMLスクリプト全体を適用して、すべての永続的な差異を修正できます。
LiveCompareを使用して、行レベルで論理データの整合性を保証できます。たとえば、次のシナリオ。
データベーステクノロジーの移行Oracle x Postgres。
サーバーの移行またはアップグレード古いサーバーx新しいサーバー。
物理レプリケーションプライマリ×スタンバイ。
フェイルオーバーインシデントの後、たとえば、新しいプライマリデータを古い分離されたプライマリデータと比較します。
フェイルオーバー後に予期しないスプリットブレイン状況が発生した場合。古いプライマリが適切にフェンスされず、アプリケーションがデータを書き込んだ場合、LiveCompareを使用して、古いプライマリに存在し、新しいプライマリに存在しないデータを正確に知ることができます。必要に応じて、 DBAはLiveCompareが生成するDMLスクリプトを使用して、これらのデータを新しいプライマリに適用できます。
論理レプリケーション。 Postgresネイティブ論理レプリケーション、pglogical、およびEDB Postgres DistributedPGD、以前はBDRとして知られている3種類の論理レプリケーションテクノロジーがサポートされています。
- 比較パフォーマンス
- ユーザーのセキュリティに関する考慮事項
- LiveCompare release notes
- Requirements
- LiveCompare Installation
- Supported technologies
- Command-line usage
- Advanced usage
- EDB Postgres Distributed support
- Oracle support
- Licenses
- Settings
- General Settings
- logical_replication_mode
- all_bdr_nodes
- max_Parallel_workers
- buffer_size
- log_level
- data_fetch_mode
- ~~
parallel_chunk_rows~~ - repair_data_fetch
comparison_algorithm- min_time_between_heart_beats
- min_time_between_round_saves
- repair_cost_limit
- repair_cost_deploy
- stop_after_time
- consensus_mode
- destination_required_quorum
- destinations_of_truth
- destination_tie_migrates
- destination_statements
- destination_allow_null_updates
- destination_statement_order
- destination_fix_replication_origin
- destination_fix_start_query
- show_progress_bars
- Output_schema
- hash_column_name
- rownumber_column_name
- fetch_row_origin
- column_intersection
- ignore_nullable
- check_uniqueness_enforcement
- oracle_ignore_unsortable
- oracle_user_tables_only
- oracle_fetch_fk_metadata
- schema_qualified_table_names
- ~~
force_collate~~ - work_directory
- abort_on_setup_error
- custom_dollar_quoting_delimiter
- session_replication_role_replica
- Split_updates
- float_point_round
- Connection Settings
- Filter Settings
- General Settings