Release Notes

2.0.0

重大な変更

  • パッケージの名前が2ndq-livecompareからedb-livecompareに変更されました。

  • 実行可能ファイルは、2ndq-livecompareからlivecompareに名前が変更されました。

新機能

  • Comparison Keyという設定の新しいセクションにより、ユーザーはテーブルごとにカスタム比較キー(列のリスト)を定義できます。これは、プライマリキーまたは一意性インデックス(LIV-5)のないテーブルに役立ちます。

  • テーブルにユーザー定義の比較キーまたはプライマリキーがない場合、LiveCompareはテーブルの一意性インデックスを使用しようとします。テーブルにはマルチプルの一意性インデックスを含めることができるため、LiveCompareは、列をNULLにできないインデックスを使用することを好みます。可能でない場合、LiveCompareは列の少ない最初の一意インデックスを使用しようとします。一意性インデックスがない場合、LiveCompareはテーブルのすべての列を比較キーとして使用しようとします。 LiveCompareは、一意性インデックス(LIV-39)からのNULL入力可能列を無視しようとしないことにノートしてください。

  • テーブルのすべての列を比較キーとして使用する場合、LiveCompareはすべての列を考慮する際の誤検知を避けるために、null許容列を無視するようになりました。この動作を無効にするには、ignore_nullable = false(LIV-96)を設定します。

  • ユーザー定義の比較キーまたはテーブルのすべての列を比較キーとして使用する場合、LiveCompareは一意性を強制するかどうかを確認します。列セットを使用するときに重複する値がある場合、LiveCompareはテーブルの比較を中止します。この動作を無効にするには、check_uniqueness_enforcement = false(LIV-119)を設定します。

パフォーマンスの改善

オラクル 12c以降では、LiveCompareはすでに共通のハッシュを使用してcomparison_algorithm = block_hashとcomparison_algorithm = row_hashを許可しており、これらはより高速で、マルチプルのワーカープロセス間でテーブルを分割できます。これは、 オラクル 12cで導入されたstandard_hash()ファンクションを使用してオラクル側で行われます。 LiveCompareでは、ユーザがsys.dbms_crypto オラクルシステムパッケージ(LIV-79)に対するEXECUTE特権を持っている場合、同等のファンクションsys.dbms_crypto.hash()を使用して、 オラクル 11gでcomparison_algorithm = block_hashおよびcomparison_algorithm = row_hashも許可します。

その他の改善

オラクル 21c(LIV-47)のサポートが追加されました。 - レプリケーション対応( BDR、pglogicalまたはネイティブロジカルレプリケーション)データベース(LIV-42)にLiveCompareスキーマを追加できるようになりました。 - LiveCompareは、 PostgreSQL 14(LIV-73)の新しいpg_read_all_dataロールを使用できます。 - データベースバージョンがサポートされていない場合は、適切なメッセージで中止します。

バグ修正

  • DML(LIV-98)を生成する際のエラーを回避するために、Unicodeシーケンス\u0000を適切にクオートしてください。

  • テーブルがマルチプルのラウンドパーツに分割されたときに、合計行数が誤って表示される問題を修正しました(LIV-14)。

  • Oracleの空のBLOBとPostgresの空のオラクルを比較すると、誤検知が発生する問題を修正しました(LIV-103)。

  • 接続の問題が原因で例外が発生し、比較セッション全体が中止される問題を修正しました。現在、LiveCompareは再接続して、可能であれば比較を続行できます(LIV-84)。

  • 分岐がある場合のrecheckモードでの未処理の例外を修正しました(LIV-107)。

  • テーブルが接続上に存在せず、logical_replication_modeが無効になっている場合にテーブル比較が中止されなかった問題を修正しました(LIV-108)。

  • timestampデータタイプのフィールドが常にオラクルとPostgresの間で不一致のハッシュを生成していた問題を修正しました。

  • 無視された列がまだ一般的なハッシュで考慮されている問題を修正しました。

廃止のお知らせ

オラクル 10g(LIV-47)のサポートを終了しました。

1.18.1(2021-12-14)

バグ修正

  • 非同期接続(LIV-95)で内部のラウンドパート列名前の設定が考慮されていなかった問題を修正しました。

1.18.0(2021-12-01)

パフォーマンスの改善

  • Oracle用の新しいオラクルデータフェッチメソッドを実装しました。アルゴリズムは、同じソケットから行をフェッチし続けます。これは、 オラクルが、最後に処理された複数列PK値を超えて行をフェッチする必要があった行値式を含む不等式演算子を許可しないため、より効率的です。これにより、 オラクルとPostgresの比較のパフォーマンスが大幅に向上します。 PostgreSQLは行値式を含む不等式演算子を許可するため、LiveCompareは準備されたステートメントを使用して同じアルゴリズムを使用し、肥大化とxminホライズンの抑制のインパクトを与えません。したがって、 PostgresとPostgresのパフォーマンスは、この実装(LIV-83、RT75644、RT75675、RT75332)の影響を受けません。

  • comparison_algorithm = block_hashを使用する場合にバッファーをリセットする必要がなくなりました。ハッシュが一致しないブロックが見つかると、LiveCompareはcomparison_algorithm = row_hashに正しく切り替えられ、一致しないブロック内のすべての行(既にフェッチ済み)が個別に比較され、comparison_algorithm = block_hashに戻って次のバッファーをフェッチします。これにより、 オラクルとPostgresおよびPostgresとPostgresの比較(LIV-85、LIV-86、RT75644、RT75675、RT75332)のパフォーマンスが向上します。

  • comparison_algorithmがblock_hashまたはrow_hashに設定されている場合(現在オラクル 12以降が必要)、LiveCompareはオラクルとPostgresの比較でもラージテーブルを分割できるようになりました。以前は、ハッシュはデータベース側で行われるため、 PostgresとPostgresでのみ可能でした。 オラクルとPostgresは共通のハッシュファンクションを共有していないため、テーブルデータをマルチプルのワーカーに分割できるように、MD5に基づく共通の行ハッシュを整数ハッシュに変換しました。 オラクルでは、パフォーマンス上の理由により、データベース側では実行できなかったため、 Python側でこのハッシュを計算します。 オラクルとPostgresのテーブル分割の並列処理のコストは、 PostgresとPostgresの場合と同じではないため、 オラクルとPostgresの場合、parallel_chunk_rowsをデフォルトの1000万よりも高く設定することをお勧めします。例、1億以上に設定すると、アルゴリズムは非常にラージテーブル(LIV-87)のみを分割します。

その他の改善

EDB Extended PostgreSQL 14およびEDB Advanced PostgreSQL 14(LIV-71、LIV-72)のサポート。 - 分岐の検査に役立つオラクル rowidの収集(LIV-90、RT75644、RT75675)。 - 相違の検査に役立つLiveRound比較アルゴリズムのロギングの改善(LIV-91、RT75644、RT75675)。

バグ修正

  • oracle_fetch_fk_metadataが尊重されない問題を修正しました(LIV-92)。

  • ログが多いユースケースでlog_level = debugを使用している場合、ロギングキューがいっぱいであるため、LiveCompareが未処理の例外で終了する問題を修正しました。 Unixシステムでは、キューの最大サイズは32676です。問題は、ベースのPython実装がロギングレコードを非同期的にキューに登録したために発生しました。解決策は、 Python実装をオーバーライドしてロギングレコードを同期的にエンキューすることでした。これは、log_level = debugおよびログが多いユースケース(LIV-93)の場合にパフォーマンスにインパクト可能性があります。

1.17.0(2021-10-01)

改善

PostgreSQL 14(LIV-66)のサポートを追加しました。 - Debian 11(LIV-70)のサポートを追加しました。

バグ修正

  • --recheckは常にセッションID(LIV-76)を必要とします。

  • 文書のマイナーな修正(LIV-26、LIV-68、LIV-80)。

1.16.0(2021-08-04)

パフォーマンスの改善

オラクルとPostgresの比較セッションでは、MD5に基づく一般的な行ハッシュを使用できるため、一般的なユースケースのパフォーマンスが向上します。以前は、 オラクルとPostgresの比較はcomparison_algorithm = full_rowに制限されていましたが、comparison_algorithm = row_hashまたはcomparison_algorithm = block_hashを使用できるようになりました。デフォルトでは、comparison_algoritm = block_hashに設定されています。 オラクルの制限により、Common Hash、BLOBおよびCLOBフィールドの使用は2000文字に制限されており、行全体が4000文字を超えることはできません。 Common Hashの要件を満たしていないテーブルは、comparison_algorithm = full_rowを使用して個別に比較できます。詳細については、文書を確認してください(RT72038、LIV-61)。 - buffer_sizeのデフォルト値を256行から4096行に増やしました。 - parallel_chunk_rowsのデフォルト値を100万行から1000万行に増やしました。

1.15.0(2021-06-06)

改善

  • --conflicts実行モードの競合フィルタリングを導入(LIV-40)

  • 照合順序が指定されていない場合(LIV-44)、LiveCompareは混在テクノロジー比較( オラクルとPostgreSQLなど)でforce_collate = Cを想定します。

  • すでに追加されたEPAS 13のサポートに加えて、EPAS 11および12(LIV-48)のサポートが追加されました。

バグ修正

  • OracleとPostgreSQLの比較でオラクルがスタックしなくなりました(RT71243 / LIV-43)

  • --conflicts(LIV-50)で作成された比較セッションで--recheckを実行できなかったバグを修正しました。

1.14.0(2021-05-14)

新機能

BDR 3クラスターに固有の新しい--conflicts実行モード。 BDR 3.6の場合、テーブルbdr.apply_logがチェックされ、 BDR 3.7の場合、テーブルbdr.conflict_historyがチェックされます。 LiveCompareは、競合のログに記録された行(key_tuple、local_tuple、 フィルタリング 、およびapply_tuple)からPK値を抽出し、影響を受けたテーブルでのみクラスタ全体の自動比較を実行できます。次に、比較により、クラスター内のすべてのノードの現在の行バージョンがチェックされます。 BDRの競合のみをチェックすることにより、比較は--compareモードよりもはるかに高速であるため、実行可能であり、クラスターの一貫性を保証に頻繁に実行することをお勧めします(LIV-28)。

改善

  • LiveCompareは、特定のテーブルが存在しない、またはレプリケーションされたデータを受信しないBDRノードを無視できるようになりました。これまでは、すべての接続で比較が実行されていましたが、比較コンセンサスにより、必要に応じてテーブルごとにノードを自動的に除外できます。テーブルが存在するノード間、およびノードがサブスクライブされているレプリケーションセットにテーブルが関連付けられているノード間で、コンセンサスマジョリティが引き続き達成されます。これにより、 BDR監視ノード(LIV-29)を適切に無視するなど、レプリケーションセットによって定義された異なるアーキテクチャを持つBDRクラスターで比較できます。

  • --helpのメッセージが改善され、すべての実行モードの簡単な説明が表示されました(LIV-28)。

  • 列がNULL入力可能かどうかに関する情報は、テーブルメタデータ(LIV-28)でも収集されるようになりました。

  • 列がプライマリキー(LIV-4)のパートである場合、ソートできないデータ型がstringに変換されることをドキュメントで明確にしました。

  • oracle_ignore_unsortableがオラクルのPKのパートではないソート不能な列を無視することをドキュメントで明確にしました(LIV-26)。

  • data_fetch_modeがprepared_statements(デフォルト)またはserver_side_cursors_with_hold(LIV-26)に設定されている場合、parallel_data_fetchを有効にできること(デフォルトでは)をドキュメントで明確にしました。

  • max_parallel_workersのデフォルト値が2(LIV-26)であることをドキュメントで明確化。

バグ修正

  • LiveCompareは現在、型をスキーマ修飾名としてハンドリングしています。この修正(LIV-35)の前に、search_pathからの型はLiveCompareで検出できませんでした。

廃止

BDR 3.7で非推奨になったbdr.difference_fix*関数の使用を削除しました。これらの関数は、 PostgreSQLスーパーユーザではなくbdr_superuserを必要とするため、 BDR 3.6用に生成されたDMLスクリプトに含まれています。これは文書(LIV-1、LIV-31)で明確にされています。

1.13.1(2021-04-14)

バグ修正

オラクルデータ型RAWおよびROWIDのサポートの問題を修正(RT69656)。 オラクルからのバイナリオブジェクトフィールドがNULLであった場合の未処理の例外を修正しました(RT69656)。 オラクル x Postgresの比較サポートに関する問題を修正しました。ドル引用符で囲まれた文字列が含まれます(RT69656)。 - 特定のPostgreSQL予約キーワードとして名前付けされた列が引用され、比較で考慮されなかったコーナーケースを修正しました(RT69656)。

1.13.0(2021-02-25)

パフォーマンスの改善

PostgreSQL接続にのみ適用される新しい設定data_fetch_modeを実装しました。次の値のいずれかを想定できます。 - prepared_statements:準備されたステートメントを使用してデータをフェッチする、このバージョンと以前のバージョンのデフォルトの動作。データベースのフットプリントが小さく、一般的なユースケースで優れたパフォーマンスを発揮します。稼動データベースにのみ推奨されます。 - server_side_cursors_with_hold:サーバサイドカーソルWITH HOLDを使用してデータをフェッチします。これにより、LiveCompareに送信される前にデータの各チャンクが一時ファイルに実体化されるため、xminを抑制してデータベースのメモリと一時ファイルの使用量を増やすことができます。その結果、マルチプルの小さなテーブルでより高速になる可能性があり、テストおよび移行シナリオで推奨されます。 - server_side_cursors_without_hold:サーバサイドカーソルWITHOUT HOLDを使用してデータをフェッチします。これにより、xminを抑制できますが、データベース上のメモリおよび一時ファイルの使用量はWITH HOLDよりも低くなります。ラージテーブルの場合は高速になる可能性があり、低ロードのデータベースにはお勧めです。

その他の改善

  • 新しい設定abort_on_setup_errorを実装しました。有効にすると、テーブルの比較ラウンドを設定するときにエラーが発生した場合、比較セッション全体をアボートするようLiveCompareに指示します。デフォルトでは無効になっています。つまり、LiveCompareは何らかの理由でセットアップフェーズが失敗したテーブルをログに記録し、無視します。

  • 新しい設定abort_on_setup_errorにより、設定setup_max_attemptsおよびsetup_min_interval_between_attemptsは廃止されました。

1.12.0(2021-02-11)

新機能

  • 新しい設定session_replication_roleを実装しました。有効にすると、適用スクリプトの開始時にsession_replication_roleがreplicaに設定されます(RM20247、RT69742)。

  • 新しい設定split_updatesを実装しました。有効にすると、UPDATEステートメントが対応するDELETEステートメントとINSERTステートメントに分割されます(RM20355、RT69742)。

  • 新しい接続設定fetch_fk_metadata。外部キーに関するメタデータを特定の接続で取得する必要があるかどうかを示します。デフォルトで有効。 オラクル接続のfetch_fk_metadataの値をオーバーライドする新しい一般設定oracle_fetch_fk_metadata。デフォルトで無効(RM20244、RT69656)。

  • 新しい一般設定float_point_round。これは、浮動小数点値を比較するときにLiveCompareに指定された10進数数で丸めるように指示する場合。デフォルトでは無効になっています(RT69381)。

削除された機能

  • --fix実行モードが削除されました。ユーザーは、LiveCompareが生成するDMLスクリプトを確認することをお勧めします。

改善

  • LiveCompareによって生成された適用スクリプトには、最初にdifference_fix_start_queryも含まれ、DMLを適用する前にテーブルの所有者を設定します。

  • すべての接続で比較されているテクノロジーがPostgreSQLである場合、comparison_algorithm = full_rowはparallel_chunk_rowsを尊重し、テーブルをマルチプルのワーカーに分割します。テーブルの分割を無効にするには、parallel_chunk_rows = 0を設定します。

  • EPASの比較時にシステムスキーマsysのテーブルを除外する(RM20392)。

  • max_parallel_workersのデフォルト値を2から4に増やしました。

バグ修正

  • comparison_algorithm = block_hashで、パラレルワーカーが処理していたデータチャンクに相違があった場合のパフォーマンスの低下を修正しました。

  • custom_dollar_quoting_delimiterのデフォルトのランダムに生成された文字列により、FIPS対応オペレーティングシステムでLiveCompareがクラッシュする問題が修正されました(RT70032、RM20378)。

  • oracle_ignore_unsortableまたはcolumn_intersectionがすべての列を削除し、LiveCompareが比較を実行しようとする問題を修正しました。 LiveCompareはこれらのテーブルの比較を中止し、適切なメッセージを記録するようになりました(RT69656)。

  • PK値を表すためにLiveCompareがcustom_dollar_quoting_delimiterを使用していなかったコーナーケースを修正しました(RT69656)。

  • --recheckモードでLiveCompareを実行すると、順序付けの違いにより出力スキーマの制約が損なわれる可能性があるバグを修正しました。

1.11.0(2021-01-19)

改善

  • LiveCompareによって生成されるDMLコマンドのオーダーの新しい設定difference_statement_order。デフォルトではdelete_update_insertに設定されます(RT69742、RM20245)。 EnterpriseDB PostgreSQL Advanced Serverのサポート-EPAS 13。

  • CentOSおよびRHELシステムでのPostgreSQL 13のパッケージ化。

バグ修正

  • カーソルの最小バグ値がすでにデータの終わりに達したカーソルの最大PK値よりも大きいためにカーソルがまだ初期化されていない場合、前のカーソルは初期化されるが、そのデータは終了(RT69742、RM20249)。

  • logical_replication_mode = pglogicalのときにLiveCompareがInitial Connectionとnode_nameを許可していなかったバグを修正しました(RM19795)。

  • schema_qualified_table_names = offの場合に強制するのではなく、schema_qualified_table_names = onの場合にLiveCompareがoracle_user_tables_only = onを強制するバグを修正しました(RT69656)。

  • comparison_algorithm = full_rowの場合、文字列が適切に引用されないバグを修正しました(RM20251)。

  • 生成されたDMLで文字列が適切に引用されないバグを修正しました。

1.10.1(2020-10-29)

バグ修正

  • 各テーブルの最小および最大プライマリキー値のフェッチのパフォーマンスが向上しました。これは、初期メタデータフェッチフェーズで行われます(RM19681、RT69088)。

  • 比較セッションを再開できるようになりました。同じメジャーバージョン上にある場合、異なるLiveCompareバージョンで以前に作成された比較セッションに対して実行モード--fixおよび--recheckを実行できます。例、セッションが1.10.0で作成され、顧客がLiveCompareを1.10.1にアップグレードしてから--fixを実行すると、セッションは同じメジャーバージョン(RM19686、RT69088)で作成されたため、LiveCompareは--fixモードの実行を許可します。

  • Row FilterをLiveCompareメタデータに保存するときの単一引用符の問題を修正しました(RM19682、RT69088)。

  • LiveCompareのデフォルトのドル引用符付け符デリミタ(custom_dollar_quoting_delimiterが設定されていない場合)は、実行中にランダム設定値が変更されたために比較セッションの再開が機能しなかった問題に対処する固定ハッシュ文字列になりました(RM19684、RT69091)。

  • custom_dollar_quoting_delimiterの設定は、offで明示的に無効にできるようになりました。つまり、LiveCompareはデフォルトのハッシュ文字列をデリミタ文字として使用します。 (RM19685、RT69091)。

1.10.0(2020-10-02)

改善

  • 新しい一般設定Postgresコマンドを生成するときに文字列を引用する方法をLiveCompareに伝えます。設定されていない場合(デフォルト)、LiveCompareはランダム文字列を生成してドル引用符付け符のデリミタとして使用します(RT68950、RM19159)。

  • LiveCompareは、セッションの最初の実行(セッション作成)と次のセッション(resume、--recheckまたは--fix)の間で設定も接続属性も変更されていないことを確認します(RM17639)。

  • バックグラウンドまたは別のシェルウィンドウで実行している場合、LiveCompareをソフトストップできるようになりました(RM18564)。

バグ修正

  • ユーザがapply_on_the_<node>.sqlファイルを使用して手動で修正を適用した後、LiveCompareが--recheckモードで実行しているときに多数の差分を正しく更新していませんでした(RM19158)。

  • --recheckモードでLiveCompareがマルチプル回実行された場合、apply_on_the_<node>.sqlファイル内の複製されたエントリが表示され、サマリーには差分/修正の複製された数が表示されます(RM19176)。

  • ラージの相違により、サマリービューでinteger out of rangeエラーが発生する(RM18705)。

1.9.1(2020-08-13)

  • 現在、特定のプラットフォームに存在しないPOSIX定数をハンドリングしています(RM18197)。

  • テーブルパーティションを処理する場合、ユーザがテーブルフィルターを設定してパーティションを削除すると、LiveCompareはマスターテーブルとフィルター処理されたものを除く他のすべての子を比較します。これは修正されました。 (RM16912)。

1.9.0(2020-08-06)

  • 設定full_comparison_mode = on|offは廃止され、新しい設定comparison_algorithmに置き換えられました。これにより、新しいblock_hashアルゴリズム設定が可能になりました-これは、基本テストで50%のパフォーマンスを示しました。サポートされているアルゴリズムの完全なリストは次のとおりです。

  • full_row(古いfull_comparison_mode = onと同じ):ハッシュを使用した行比較を無効にします。また、ハッシュに依存しているため、テーブルの分割も無効になります。そのため、設定parallel_chunk_rowsは無視され、テーブルは分割されません。この場合、列ごとに行を比較することにより、完全な比較が実行されます。データ接続がPostgreSQLでない場合、LiveCompareは自動的にcomparison_algorithm = full_rowを設定します。

  • row_hash(古いfull_comparison_mode = offと同じ):ハッシュを使用し行比較を有効にし、テーブル分割を有効にします。テーブルは分割されているため、各ワーカーはテーブルごとに最大parallel_chunk_rowsを比較します。 PostgreSQLではデータ行がハッシュされるため、比較はfull_rowより高速です。ただし、特定の行に対してハッシュがマッチしない場合、その特定の行に対してLiveCompareはfull_rowアルゴリズムにフォールバックします(つまり、行ごとに比較行ます)。この設定は、すべてのデータ接続がPostgreSQLである場合にのみ許可されます。

  • block_hash(新しく実装された比較アルゴリズム):row_hashと同じように動作しますが、 行行ごとに比較する代わりに、「ブロックハッシュ」、つまり、フェッチされたばかりのデータバッファー内のすべての行のハッシュのハッシュを構築します(最大buffer_size行)。概念的には、2レベルのマークルツリーのように機能します。ブロックハッシュが一致する場合、LiveCompareはブロック全体を進めます(このため、この比較アルゴリズムはrow_hashよりも高速です)。ブロックハッシュがマッチしない場合、LiveCompareはrow_hashにフォールバックし、バッファー内の行ごとに比較を実行して発散行を見つけます。この設定は、すべてのデータ接続がPostgreSQLである場合にのみ許可されます。これがデフォルト値(RM14146)。

  • LiveCompareは、エラーで終了する前に、各テーブル設定でいくつかの試行を行うことができるようになりました。この動作を構成するために、setup_max_attempts(デフォルトは3)とsetup_min_interval_between_attempts(デフォルトは30秒)の2つの新しい設定が追加されました(RM17518)。

  • >を使用して出力をリダイレクトし、LiveCompareをsshを介して実行している間、LiveCompare出力が出力ファイルに出力されるようになりました(RM17372)。

  • ロギングとデバッグの改善のためにコンセンサスがリファクタリングされました(RM17107)。

  • 比較セッションの終わりに、LiveCompareはログレベルに応じて、検出された問題のカウンタを表示するようになりました(RM18196)。

  • タイの場合、すべてのノードに対してDMLが生成されるようになりました(RM16656)。

  • LiveCompareは、特定のテーブルで相違が見つかった場合、テーブルサマリーで無視される列の最大数を表示するようになりました(RM16581)。

  • OutputまたはInitial(指定されている場合)の場合、LiveCompareは適切なメッセージで中止されます。接続に到達できません。また、到達可能なデータ接続が2つより小さいの場合は、適切なメッセージで中止されます。 2つ以上が到達可能な場合は、その1つだけを比較します(RM14030)。

  • DebianおよびUbuntuパッケージソフトには、python3-setuptoolsが必要になりました(RM17232)。

  • サポートされる最小のPythonバージョンとLinuxディストリビューションに関するドキュメントで明確化されました(RM17232)。

  • テーブルパーティションを扱うとき、LiveCompareはマスターテーブルを使用するよりも各パーティションをスキャンすることを好みます。この方法により、行数の推定が向上し、ワーカー間のジョブの分割も改善されます(RM16912)。

  • 差分カウントの代わりにPOSIX標準結果コードを使用(RM18197)。

  • TPAexec(RM15312)を使用してLiveCompareをインストールする方法を示すサンプルconfig.yml例をドキュメントに追加しました。

  • --recheckおよび--fixモードのロギングの改善(RM15768)。

  • 例外が発生した場合、 Pythonスタックトレースがログに含まれます(RM17158)。

  • PgBouncer(RM18019)を介してPostgreSQLに接続するLiveCompareに関するいくつかの考慮事項をドキュメントに含めました。

  • round_idおよびround_partフィールドをvw_running_processesビューに追加しました。これは、LiveCompareの実行がcronジョブ(RM16910)としてスケジュールされている場合の比較の進行状況の確認に役立ちます。

  • Output Connectionでtuple concurrently updatedが発生するコンセンサスの競合状態を修正しました(RM17107)。

  • num_processed_rowsが実際の値よりも高く報告される問題を修正しました(RM17373)。

  • 実行中に何らかの種類の問題が見つかった場合、LiveCompareはsuccessfully executedを報告しなくなりました(RM17289)。

  • ユーザがmax_parallel_workers&lt; = 0を設定した場合にハングを回避オーダーに、少なくとも1つのワーカーを強制しました(RM17374)。

  • 印刷されたテーブルのラージ整数の数値フォーマットを修正しました。 LiveCompareは、科学表記法を使用する代わりに、全体の数を表示するようになりました(RM16683)。

  • --fixモードが誤った差分ステータスを報告していた問題を修正しました(RM15953)。

  • 無視された列のリストがテーブルメタデータで誤って報告されていた問題を修正しました(RM17663)。

  • 異なる真実のソースまたはタイブレーカーでLiveCompareを再実行すると、ダイバージェンスがタイとして誤って報告される問題を修正しました(RM17909)。

1.8.0(2020-06-15)

  • 新しい接続difference_sources_of_truth。どの接続が常にコンセンサスを獲得するかを示すために使用されます。 consensus_modeがsource_of_truthに設定されている必要があります(RM15952)。

  • 新しい設定work_directory。セッションフォルダーが作成される場所を示します。 cronジョブとしてスケジュールされたLiveCompareの実行に役立ちます(RM16476)。

  • 差分修正DMLスクリプトに書き込まれたDMLコマンドの順序は、外部キーをアカウントに入れるようになりました。 --fix実行モードでも同じオーダーが使用されます(RM15766)。

  • LiveCompareは、既知の接続IDのリストに対してdifference_tie_breakersとdifference_sources_of_truthをチェックするようになりました。不明な接続IDを指定すると、エラーがユーザに表示され、比較が中止されます(RM16622)。

  • CentOS 8およびUbuntu 20.04のサポートを追加(RM14480、RM14619、RM14974)。

  • 通常のテーブルをプリントする場合、データがnullの場合は空のセルが印刷されます。代わりに[null]を出力するようになりました(RM16686)。

  • Coverityスキャナで検出されたマイナー問題を修正(RM16623)。

  • メインスクリプトが3つのパラメーターのみで呼び出されたときに正しく処理されるようになり、セッションIDか実行モードかを正しく区別します。

  • 表形式のデータを転置フォーマットで印刷する場合、データがnullの場合、フィールド全体が省略されます。この問題は修正されました(RM16686)。

1.7.0(2020-05-18)

  • LiveCompare実行モードを実装しました:

  • --compare:デフォルトの実行モード。比較のみを実行し、並列で実行されているスレッドの再チェック/修正の違いはありません。比較中に、検出された各差異はdifference_logテーブルに保存され、後で再チェックし、オプショナルで自動修正します。

  • --recheck:compareモードで既に作成されたセッションに対して何度でも実行できます。差異を1つずつ再チェックし、difference_logテーブルを更新します。

  • --fix:compareモードですでに作成されたセッションに対して実行できます。差分を1つずつ再チェックし、自動的に修正して、difference_logテーブルを更新しようとします。

  • 比較モードでは、相違のリストを保持するビューはvw_open_differencesであり、再チェックおよび修正モードの場合、ビューはvw_differencesです。

  • 自動修正モードでは、 BDR > = 3.6.18の場合、LiveCompareはbdr_local_only_origin(RM14699)という新しい事前作成されたレプリケーションオリジンを使用します。

  • 設定difference_mode、min_time_between_difference_checks、max_difference_check_attempts、およびdifference_check_nap_timeを削除しました。

  • live_mode、min_time_between_rounds、およびmax_tail_rounds_before_full_roundの設定を削除しました。

  • show_progress_barsの設定が有効になっている場合(デフォルトでは)、 Pythonモジュールtqdmは&lt; 4.16.0、LiveCompareはアップグレード方法の説明を中止します。

  • デフォルトで無効になっている新しい一般設定column_intersectionを実装しました。この設定を有効にすると、LiveCompareは、PK列が同じである限り、異なる列セットを含むテーブルの比較を許可します。比較で考慮される列のセットは、すべての接続上のテーブルに存在する列の積部分です(RM14147、RT67064)。

  • 新しいセクションColumn Filterを実装しました。各テーブルで、比較で無視する列のコンマ区切りリストを定義できます。 PKのパートである列は無視できません。このセクションのフォーマットは、Row Filterセクション(RM14629、RT67064)と同様に、1行に1つのテーブルです。

  • デフォルトで無効になっている新しい一般設定oracle_ignore_unsortableを実装しました。有効にすると、テーブルにPKがない場合、 オラクルのソート不可能なデータ型(BLOB、CLOB、NCLOB、BFILE)の列を無視するようLiveCompareに指示します。この設定を有効にする場合は、column_intersection(RT67064)も有効にすることをお勧めします。

  • デフォルトで無効になっている新しい一般設定oracle_user_tables_onlyを実装しました。有効にすると、LiveCompareにオラクルのログインユーザからのみテーブルメタデータをフェッチするように指示します。これは高速です。また、Table Filter -> tablesは、スキーマ名前なしのテーブル名前でフィルタリングできます(RT67064)。

  • デフォルトで有効になっている新しい一般設定schema_qualified_table_namesを実装しました。無効にすると、スキーマ修飾されたテーブル名を使用せずにテーブルを比較できますオラクル Postgresの比較では、oracle_user_tables_onlyも有効にする必要がありますPostgresPostgres、同じデータベース内であっても異なるスキーマにあるテーブルの比較が可能です。また、schema_qualified_table_namesが有効な場合、Table Filter -> tables、Row Filter、およびColumn Filterは、スキーマ名前なしのテーブル名前を許可します。 (RM14901、RT67042)。

  • schema_qualified_table_namesが有効でstart_queryが設定されていない場合(デフォルト)、LiveCompareはstart_queryを使用してsearch_pathをクリアし、CVE-2018-1058( オーダー )から保護します。

  • 新しい一般設定force_collateを実装しました。デフォルトではoffに設定されています。これは、 PostgreSQLで照合順序が強制されないことを意味します。有効な照合順序名前に設定する場合、 PostgresにC以外の照合順序がある場合(この場合、ユーザーはforce_collate = Cを設定する必要があります)(RM15016、RT67064)、異なる照合順序を持つPostgresデータベースまたはオラクルとPostgresデータベースを比較すると便利です。

  • デフォルトで無効になっている新しい一般設定fetch_row_originを実装しました。この設定を有効にすると、LiveCompareは各分岐行のBDR/ pglogicalオリジン名前をフェッチします(RM14487)。

  • 比較中に例外が見つかった場合、LiveCompareは特定のテーブルの比較ラウンドを中止し、新しい列rounds.round_errorにエラーを書き込んで、失敗したワーカーをプールに戻します(RT67064)。

  • LiveCompareの一般的な進行状況バーに、比較中のエラーが原因で中断されたテーブルの数が表示されるようになりました。

  • 最初に接続を開き、データベース接続を再利用します(RT67042)。

  • ユーザが構成ファイルを読み取る権限を持っていない場合のエラーメッセージを明確にしました(RT67064)。

  • Table FilterおよびRow Filterが、一般設定schema_qualified_table_namesが無効になっていない限り、スキーマで修飾されたテーブル名が必要であることをドキュメントで明確にし、構成例を提供しました(RM15311、RT67669)。

  • 設定ファイルで認識されない設定が見つかった場合、エラーメッセージで中止します。

  • 必要な接続数についてドキュメントで明確化。

  • CentOS / RHELのEPELリポジトリへの依存についてドキュメントで明確化。

  • postgresオペレーティングシステムユーザ向けのcx_Oracle Pythonモジュールのインストール方法に関するドキュメントで明確化。

  • セッションディレクトリとログファイルにlc_プレフィックスを追加しました。

  • いずれかの接続でtechnology = oracleとPythonモジュールcx_Oracleが見つからない場合、LiveCompareは現在のユーザに最新のcx_Oracleをインストールする方法の説明を中止します。

  • 自動生成されたDML *.sqlスクリプトには、 BDRのSET LOCAL bdr.xact_replication = off;句が含まれるようになりました。

  • 列名前がPostgresの予約ワードであるために列名前の不一致が誤って評価されたため、 オラクルとPostgresのテーブル比較が中止されていた問題を修正しました(RT67064)。 オラクル :テキスト列を持つPKがORA-00920: invalid relational operatorエラー(RT67064)を生成する可能性がある問題を修正しました。

  • ソート不可能なデータタイプの列がORDER BY句で適切に処理されていなかったオラクルおよびPostgresの問題を修正しました(RT67064)。

  • difference_allow_null_updatesの設定が誤って解釈されていたため、UPDATEが列をNULLに設定しなかったDMLジェネレータの問題を修正しました。

  • 比較カーソルが適切に進行しなかったコーナーケースを修正しました。

  • ユーザが既に終了した比較セッションを再開しようとしたときのエラーメッセージが修正されました。

1.6.0(2020-04-03)

PostgreSQL > = 11の場合、hashtextの代わりにビルトインファンクションhashtextextendedを使用して、比較ワーカー間でデータを分割します(RT67167、RM13664)。 オラクル PKの列名のリストに重複した列名があり、エラーと比較が中止されるという問題を修正しました(RT67064、RTM14145)。 - 最初にデータ接続に接続できない場合、LiveCompareは比較セッション全体を中止します(RT67042)。 - ラウンド状態があまりにも頻繁に保存され、min_time_between_round_savesを尊重しない問題を修正しました。パフォーマンスが向上します。 - 接続およびクエリーの問題のロギングが改善されました。

1.5.0(2020-03-13)

  • Oracleはparallel_data_fetch(RM13714、RT67042、およびRT67064)をサポートしていないため、接続の1つがオラクルである場合、parallel_data_fetchの設定は自動的に無効になりオラクル。

  • 実行可能なラウンドの最大数、処理可能な行、および単一の比較セッションで検出できる差異の増加(integerからbigintへのデータタイプ)(RM13664およびRT67167)。

  • 進行状況バーをASCIIからUnicodeに変更しました。

  • 5秒ごとに経過するグローバルプログレスバーの時間を更新します。

  • グローバルプログレスバーからレートと推定時間を削除し、接続数を追加しました。 PythonモジュールTQDM> = 4.16が利用可能な場合、グローバルプログレスバーに追加の統計(検出された差異の数と適用された自動修正)が表示されます。

  • テーブルが分割されている場合でも、比較される予定のテーブルの数によってプロセスの最大数が制限される問題を修正しました。

  • テーブルのメタデータを取得する際のログの詳細度をINFOからDEBUGに減らしました。

  • マニュアル(Ctrl-C)または自動中断(stop_after_time)が発生するログの場合を含む。

1.4.0(2020-02-13)

  • 並列データフェッチを実装して、多元比較のパフォーマンスを改善しました。パラレルデータフェッチはデフォルトで有効になっていますが、parallel_data_fetch = offを設定することで無効にできます。

  • 行がローカルである、つまり、そのxminがレプリケーションオリジンに関連付けられていなかった問題を修正しました(RT66906)。

1.3.0(2020-01-30)

  • 多元比較:LiveCompareは、任意の数の接続を比較できるようになりました。比較は、すべてのノードから同時にデータをフェッチすることにより行われます。これにより、コンセンサス(定足数ベースまたはシンプル多数決の両方がサポートされます)およびタイブレーカー接続のオプショナルのリストに基づいて、データの不一致を判断できます。新しいビューvw_consensusを使用して、LiveCompareの動作の詳細を確認できます。

  • 新しい一般設定all_bdr_nodesが追加されました。有効にすると、ユーザはBDRノードを指すInitial Connectionセクションのみを指定でき、LiveCompareはBDRクラスター内のすべてのアクティブノードを考慮した接続のリストを作成します。 bdr.node_summaryビューに表示されるように、LiveCompareはノードDSNを使用してすべてのBDRノードに接続できる必要があることにノートしてください。

  • 新しい一般設定consensus_modeが追加されました。これは、データ比較で相違が見つかった場合にどの接続(またはBDRノード)が正しいと見なされるかを決定します。 simple_majorityまたはquorum_basedにすることができます。 consensus_mode = quorum_basedの場合、新しい設定difference_required_quorum(0.0〜1.0の値、デフォルトは0.5)が考慮されます。デフォルトはconsensus_mode = simple_majorityです。

  • データ設定が異なる場合にコンセンサスが正しい接続またはノードを決定できない場合にヘルプ新しい設定difference_tie_breakersを追加しました。接続名のコンマ区切りリストである必要があります(例:difference_tie_breakers = node1,node2)。この例では、セクションnode1 Connectionおよびnode2 Connectionsを.iniファイルまたはbdr_all_nodes = onで定義し、Initial Connectionのみを定義し、node1およびnode2を有効なBDRノード名にする必要があります。デフォルトでは、接続はタイブレーカーと見なされません。

  • 多元比較では、接続セクション名前に「左」と「右」以外の接続名も使用できます。ユーザーが引き続きLeft ConnectionとRight Connectionを定義できるように下位互換性が維持されていますが、上記のようにdifference_tie_breakersの定義が必要な接続は2つだけです。以前は、「左」接続は常にタイブレーカーと見なされていました。つまり、自動差分修正が有効になっている場合は正しいと見なされていました。

  • 多元比較では、PostgreSQLが存在する場合、接続の1つだけがPostgreSQLと異なることが必要です。

  • 新しい設定stop_after_timeを実装して、数秒後にLiveCompareを手動で中断できるようにしました。デフォルトでは、stop_after_time = 0はLiveCompareが自動的に停止しないことを意味します(マニュアルのCtrl-cによってのみ)。 LiveCompareは、すべての場合にCtrl-cを使用して手動で停止できます。 LiveCompareが手動または自動で中断されたかどうかに関係なく、コマンドラインで引数としてセッションIDを渡すことで再開できます。

  • 新しいテーブルdifference_fixは、各データ接続で実行された(または実行しようとした)正確なDML LiveCompareを、時間とエラー(存在する場合)に格納します。スクリプトapplied_*.sqlには、同じ適用済みDMLも含まれるようになりました。

  • LiveCompareはテーブルの所有者をテーブルのメタデータに保存するようになりました。

  • 差分修正トランザクションのタイムスタンプを2000-01-01から2010-01-01に変更しました。これはBDRに対してのみ有効です&lt; 3.6.11。3.6.11以降では、代わりにビルトインファンクションbdr.difference_fix_xact_set_avoid_conflictが使用されるため。

  • 自動修正が無効になっている場合、 BDRデータベースにbdr_livecompareレプリケーションオリジンが不必要に作成されていた問題を修正しました。

  • 比較ワーカープロセスが正常に終了しない可能性がある問題を修正しました。

  • CI:Ubuntu 18.04 LTS向けにLiveCompareパッケージソフトもビルドされるようになりました。

1.2.0(2020-01-03)

  • LiveCompareは、 オラクルとPostgresの比較でBLOBフィールドをサポートするようになりました。

  • 無視された相違:ユーザーは、出力PostgreSQL接続(RM8939)でファンクション<livecompare_schema_name>.accept_divergence(session_id, table_name, difference_pk)を手動で呼び出すことにより、特定の相違の相違の再チェックを停止できます。

  • 揮発性の発散:一貫性のない行でxminが差異の再チェックで変更された場合、LiveCompareは再チェックを停止し、差異を揮発性としてマークします(RM10964)。

  • 上書きされた相違:自動修正が適用された後、再チェック時にxminが変更された場合、修正後に行が変更されたことを意味します。 LiveCompareは、相違を上書き(RM10964)としてマークします。

  • 修正不可能な発散:自動修正が正常に適用された後、再確認時にxminが変更されていなくても発散が残っている場合、LiveCompareは発散を修正不可能としてマークします(RM10964)。

  • LiveCompareは、分岐がない場合はコード = 0を返し、分岐がある場合は> 0をリターンコード。

  • すべての一般設定とともに、テーブルフィルターと行フィルターがテーブル<livecompare_schema_name>.settingsに保存されるようになりました。

  • 新しい一般設定difference_check_nap_time。新しい差分チェックスプリントを開始する前に、差分チェックワーカーがスリープする秒数を制御します。デフォルト:5秒。 BDR 3のテーブルリストを作成するとき、LiveCompareは宣言パーティションを考慮しません(RT66502)。

  • LiveCompareは、 PostgreSQL接続に対してのみDMLスクリプトを生成します。

  • 自動修正が有効な場合(difference_mode = live_fixまたはdifference_mode = offline_fix)、正しい接続がPostgreSQLであることが必要です。

  • セキュリティの問題を修正:テーブル/列名とすべてのリテラルが適切に引用されるようになりました(RM12530)。

  • 予約語が列名として使用された場合の問題を修正(RM12530)。

  • ビューvw_differencesの列名の問題を修正(RM12529)。

  • ハッシュ比較でテーブルが不必要に分割されていた問題を修正しました。

1.1.0(2019-12-18)

BDR 3のテーブルリストを作成する場合、LiveCompareは、左接続と右接続(RT66502)の両方のBDRノードに関連付けられているレプリケーションセットの積部分のみを考慮するようになりました。 - パーティション化されたテーブルパーティションまたはパーティションが考慮されていた場合のテーブルリストの構築の問題を修正(RT66499)。 - 接続のバリデーションとテーブルリストの作成の初期ステップのログの詳細度を改善しました。 オラクルのエンコーディングおよび文字列ハンドリングに関する問題を修正しました。

1.0.0(2019-12-03)

  • LiveCompareは、 BDRでレプリケーションオリジンを作成および使用できます。 BDRバージョンが3.6.11以降の場合、LiveCompareでは、 BDR関数bdr.difference_fix_origin_create(text)、bdr.difference_fix_session_setup(text)、bdr.difference_fix_session_reset()およびbdr.difference_fix_xact_set_avoid_conflict()を使用してレプリケーションオリジン管理を実行するために、bdr_superuser権限を持つユーザまたはPostgreSQLスーパーユーザが必要です。 BDRバージョンが3.6.10以前の場合、LiveCompareでは、 PostgreSQL関数を使用しPostgreSQLレプリケーションオリジン管理を実行するためにPostgreSQLスーパーユーザが必要です。それ以外の場合、LiveCompareはレプリケーション起点元を管理しようとしません。 (RT66192およびRM11000)。

  • LiveCompareは、 BDR / pglogical内の一貫性のない行からレプリケーションオリジン情報をフェッチできます。 BDRバージョンが3.6.11以降の場合、LiveCompareでは、bdr_superuser権限を持つユーザまたはPostgreSQLスーパーユーザが行からレプリケーションオリジン情報をフェッチする必要があります。 BDRバージョンが3.6.10以前またはpglogical 3が使用されている場合、LiveCompareでは、pglogical_superuserパーミッションを持つユーザまたはPostgreSQLスーパーユーザが行からレプリケーションオリジン情報をフェッチする必要があります。それ以外の場合、LiveCompareはレプリケーションオリジン情報をフェッチしようとしません(RM11971)。

  • 親テーブルが既にテーブルリストにある場合は、テーブルリストからパーティションを削除しテーブルリスト(RT65920およびRM10994)。

  • pglogicalおよびBDRのテーブルリストを作成するときは、レプリケーションセットテーブルを常に考慮してください(RT65920)。

  • 空の文字列をハンドリングするときの問題を修正(RT65918およびRT65988)。

  • 0.11.0から0.12.0へのアップグレード処理の問題を修正(RT65918およびRT65988)。

  • 最小PKおよび最大PK値の決定の問題を修正しました。

0.12.0(2019-11-01)

  • difference_fix_start_queryの設定のデフォルト値を変更して、自動修正トランザクションでロールをテーブルの所有者に変更しました。これは、悪意のあるトリガーを作成することにより、データベースユーザーがLiveCompareで使用される特権ロールにアクセスできないようにオーダーに行われます。その結果、正しい接続のユーザは、ロールをテーブル所有者(RM11000)にスイッチことができるニーズがあります。

  • LiveCompareがテーブルリストを作成した後、LiveCompareがテーブルの比較ラウンドを開始する前に、テーブルが削除されたり、スキーマの変更が破損したりするケースを処理しました。 LiveCompareは、比較ラウンドの前にテーブルに関するメタデータをチェックおよび更新します(RT65918)。

  • pg_replication_origin_session_setupの実行時の問題を修正(RT65988)。

  • 最大PK値の決定の問題を修正(RM11340)。

  • データベースにラージのテーブルがある場合、テーブルからメタデータをフェッチするときのパフォーマンスの問題を修正しました。

0.11.0(2019-10-10)

  • 各差分チェックはテーブルdifference_logに記録されるようになりました。これは、時間の経過とともに変化する各差分の分析に役立つ情報を提供します。それぞれの違いは、次のいずれかのステータスを通過できます。

  • 検出済み(D) :違いが検出されたばかりです。 difference_mode = live_nofixまたはdifference_mode = live_fixの場合、LiveCompareは、結論が出るまで(以下の他のステータスを参照)、または最大N回(max_difference_check_attemptsの設定で構成可能)、各再チェックの間にX秒待機するまで、差をマルチプル回再チェックしますmin_time_between_difference_checksの設定により構成可能)。 difference_mode = offline_nofixまたはdifference_mode = offline_fixの場合、検出された各差異はすぐに 永続的 と見なされます。

  • 永続(P) :max_difference_check_attemptsの差を再チェックした後、LiveCompareは再チェックを停止し、差を 永続 としてマークします。 difference_mode = offline_nofixまたはdifference_mode =offline_fix  `の場合、再チェックは行われないため、すべての違いは検出された時点で永続的としてマークされます。

  • 不在(A) :max_difference_check_attemptsに達する前に、LiveCompareが差異がもう存在しないことを検出した場合(行は両方のデータベース間で一貫している)、LiveCompareは再チェックを停止し、差異を Absentとしてマークします (以前のバージョンでは、LiveCompareは差分テーブルからレジスタを削除していました)。

  • 許可されていません(N) :違いは検出されましたが、LiveCompareは自動的に修正できる違いの種類を制限しているため(ユーザdifference_statementsおよび/またはdifference_allow_null_updatesを介して)この違いを自動的に修正することは禁止されています。

  • 修正済み(F) :difference_dml_rightフィールドからDMLを適用することにより、Right ConnectionのLiveCompareによって差異が自動的に修正されました。

  • エラー(E) :LiveCompareは、difference_dml_rightのフィールドからDMLをRight Connectionに適用することで違いを修正しようとしましたが、エラーが発生しました。エラーメッセージはフィールドdifference_dml_errorに記録されます。

  • 出力接続の自動スキーマ変更:ユーザがOutput Connectionを以前のLiveCompareバージョンで使用されていたデータベースに指定している場合、LiveCompareは自動的にスキーマ変更をハンドルします。 0.11.0では、LiveCompareはスキーマを再作成しますが、0.12.0からは、実装はスキーマの変更のみを適用し、ユーザデータを保持します。

  • .iniファイルからのセッション値を格納するためのテーブルconnectionsおよびsettingsを作成しました。

  • 各差異の行表現形式の改善:行全体がJSONとして保存されるようになりました。

  • xminを行の拡張列に格納します。

  • 行の拡張列(ctid、xmin、origin)もJSONとして保存されるようになりました。

  • 複数行の値を持つテキスト列、バイナリデータを持つ列、および配列列のDMLが改善されました。

  • テーブルに複数行の文字列、 null値、またはbytea型のPKと列がない場合の未処理の例外を修正しました。または、テーブルにPKがあったが、PKに前述の状況のいずれかがあった場合。

0.10(2019-09-24)

  • 新しい設定difference_modeが追加されました。

  • offline_nofix:比較対象のテーブルにはロードがかかっていないため、差異は再チェックされません。違いは報告されますが、修正されません。

  • offline_fix:比較対象のテーブルにはロードがかかっていないため、差異は再チェックされません。違いは、見つかったときにRight Connectionで報告および修正されます。

  • live_nofix(デフォルト):LiveCompareは、比較対象のテーブルにロードがかかっていると想定しているため、LiveCompareはそれらを再チェックして、最終的な整合性のためになくなっているかどうかを確認します。永続的な違いは報告されていますが、修正されていません。

  • live_fix:LiveCompareは、比較対象のテーブルにロードがかかっていると想定しているため、LiveCompareはそれらを再チェックして、結果整合性のためになくなっているかどうかを確認します。永続的としてマークされている場合、差異は報告および修正されます。

  • difference_recheckの設定はdifference_modeにマージされました。 difference_mode = offline_nofixにマップされたdifference_recheck = offおよびdifference_mode = live_fixにマップされたdifference_recheck = onの動作。

  • difference_mode = offline_nofixまたはdifference_mode = live_nofixの場合、またはdifference_mode = offline_fixまたはdifference_mode = live_fixの場合に自動的に適用される場合、DMLスクリプトでLiveCompareによって生成されるDMLステートメントの種類を制御する新しいグローバル設定difference_statementsが追加されました。 difference_statementsの値は次のとおりです。

  • all(デフォルト)

  • inserts

  • updates

  • deletes

  • inserts_updates

  • inserts_deletes

  • updates_deletes

  • 新しいグローバル設定difference_allow_null_updates(デフォルトon)が追加されました。これは、差分レポートまたは自動修正でUPDATE SET col = NULLなどのコマンドを許可するかどうかを決定します。

  • 新しいグローバル設定difference_fix_replication_originが追加されました。手動で設定されない場合、pglogical 3および/またはBDR 3比較のためにデフォルトで自動的にbdr_livecompareに設定されます。 LiveCompareは、正しい接続に特定のレプリケーションオリジンが存在しない場合は作成し、difference_mode = live_fixまたはdifference_mode = offline_fixの場合、このレプリケーションオリジンを使用してすべての自動DML修正を適用します。 LiveCompareが作成するレプリケーションオリジンは、比較後の検証を可能にするために削除されませんが、必要に応じて、SELECT pg_replication_origin_drop('<value of setting difference_fix_replication_origin>');を使用してレプリケーションオリジンを削除できることに注意してください。

  • 新しいグローバル設定difference_fix_start_queryが追加されました。これは各トランザクションの開始時に実行され、正しい接続の違いを自動的に修正します。 BDR 3.6.7以降では、difference_fix_start_queryが空の場合、LiveCompareは自動的にdifference_fix_start_query = SET LOCAL bdr.xact_replication = off;を設定します。 LiveCompareは、difference_fix_replication_originで指定されたレプリケーションオリジンを差分修正トランザクションが使用するmakeに、difference_fix_start_queryも自動的に設定します。

  • 新しい接続設定start_queryが追加されました。これは、接続が開かれるたびに任意のクエリーを実行に使用できます。

  • 新しいグローバル設定show_progress_bars(デフォルトはon)を追加しました。これは、コンソール出力にプログレスバーを表示するかどうかを決定します。バッチ実行に便利です。 Postgresの比較では、検出されたそれぞれの差に、行のctidも保存されるようになりました。 BDR 3またはpglogical 3が使用されている場合、検出された各差分には、行のxminのレプリケーションオリジンも格納されます。

  • 生成されたDMLスクリプトは、常にすべてのDMLを単一のトランザクション内に配置します。 difference_fix_start_queryが(手動または自動で)定義されている場合、トランザクションの開始時に追加されます。

  • 実行の終了時にグローバルプログレスバーが削除されない問題を修正しました。

  • 出力データベースの存在がチェックされていなかったバグを修正しました。

0.9(2019-08-30)

  • 左または右接続でのオラクルデータベースのサポート。 オラクル Instant ClientとPythonモジュールは個別にインストールする必要がありますが、 Postgresデータベースには必要ありません。 LiveCompareは、 オラクルに接続しなくても機能します。

  • 現在、行ハッシュとテーブル分割ハッシュは、 PostgreSQLとPostgreSQLの比較でのみ許可されています。 PostgreSQL以外の技術がいずれかの接続で使用されている場合、新しい設定full_comparison_modeは自動的にonに設定されます。ユーザがPostgresとPostgresの両方でハッシュの使用を無効にしたい場合、full_comparison_mode = onを構成ファイルで明示的に定義できます。 BDR 1および2のサポート。logical_replication_mode = bdrの場合、node_nameで接続を定義し、replication_setsでテーブルをフィルター処理できます。

  • Left ConnectionとRight Connectionの接続のいずれかがPostgreSQLにある場合、行ハッシュはmd5()であるニーズがあります&lt; 11.それ以外の場合、両方の接続でhashtextextended()が使用されます。これにより、混在PostgreSQLバージョンの比較が可能になります(例、9.4と12)。

  • logical_replication_modeを設定すると、Initial ConnectionおよびLeft ConnectionにPostgreSQLのバージョンと拡張機能の存在がバリデーションされます。テーブルリストはLeft Connectionから作成されることに注意してください。ただし、Right Connectionでは、接続のみがチェックされます。これにより、混在テクノロジーの比較が可能になります(PostgreSQLとオラクル、 BDRとPostgreSQL、 BDR 2とBDR 3など)。

  • ユーザーが差分の再確認を有効または無効にできる新しい設定difference_recheck(ブール値、デフォルトはon)。

  • テーブルスキーマの違い(列名と列データ型)は、後で分析するためにレポートデータベース(テーブルtables)にログオン。

  • 後の分析のために、左と右の接続情報がレポートデータベース(テーブルsessions)にログオンています。

  • テーブルに重複した行があるコーナーケースでの差分チェックのバグを修正しました。

  • テーブルの正しい接続にさらに行がある場合の差分レポートのバグを修正しました。

  • 一時的な差異がある場合の差異レポートのバグを修正しました。

0.8(2019-08-07)

  • テーブルにマルチプルのフィールドを持つPKがある場合の単行のフェッチ(不整合をチェックするため)を修正しました。

0.7(2019-08-06)

  • 行のないテーブルのハンドリングを修正しました。

  • 空のセクションのハンドリングが改善されました。

0.6(2019-06-17)

  • ロギングコンポーネントを変更しました。

0.5(2019-06-17)

  • バグ修正:

  • 順序付け演算子を使用せずにデータ型を並べ替えするサポート。

  • hashtextextended()が使用できない場合(PG&lt; = 10)、md5()をレコードハッシュとして使用します。

  • 構成ファイルが存在しない場合、適切なメッセージします。

0.4(2019-06-12)

  • 2ndQuadrant CIパイプラインに含めるための準備。

0.3(2019-05-29)

  • 接続を指定するDSNのサポート。

  • テーブルおよび行フィルターの改善。

  • さまざまなタイプのロジカルレプリケーションのサポート:

  • ネイティブロジカルレプリケーション

  • pglogical

  • bdr BDRサポート

  • ユーザが接続のノード名を指定できるようにします。

  • ユーザがレプリケーションセットをテーブルフィルターとして指定できるようにします。

  • さまざまなテストシナリオを作成しました。

0.2(2019-05-21)

  • ハッシュの改善:md5()の代わりにhashtext()とhashtextextended()を使用。

  • フェッチは準備済みステートメントを使用して実行されます。

0.1(2019-05-17)

PostgreSQLの初期サポート。 - スタンドアローンモードの初期実装。