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);
サーバーの移行またはアップグレード(古いサーバー×新しいサーバー);
物理レプリケーション(プライマリ×スタンバイ);
フェールオーバーインシデントの後、たとえば、新しいプライマリデータを古い分離されたプライマリデータと比較する場合。
フェールオーバー後に予期しないスプリットブレイン状況が発生した場合。古いプライマリが適切にフェンスされておらず、アプリケーションがデータを書き込んだ場合、 LiveCompareを使用して、古いプライマリに存在し、新しいプライマリに存在しないデータを正確に知ることができます。必要に応じて、 DBAはLiveCompareが生成するDMLスクリプトを使用して、これらのデータを新しいプライマリに適用できます。
論理複製。 Postgresネイティブ論理レプリケーション、pglogical、およびEDB Postgres Distributed(PGD、以前はBDR)の3種類の論理レプリケーションテクノロジーがサポートされています。