General Settings#

logical_replication_mode#

プログラムが接続とテーブルフィルター設定を解釈する方法、および比較を開始する前に接続をチェックする要件に影響します。現在、使用可能な値は次のとおりです。

  • off データベース間に論理レプリケーションが存在しないことを想定しています。

  • native データベース間にネイティブ論理レプリケーションがあることを前提としています。 Table Filter -> publications 設定の使用を有効にして、使用するテーブルのリストを指定します。すべてのデータベースでPostgreSQL 10+が必要です。

  • pglogical データベース間にpg論理レプリケーションがあることを前提としています。 Table Filter -> replication_sets 設定の使用を有効にして、使用するテーブルのリストを指定します。また、 node_name を使用してデータ接続を指定できるようにします。これには、ノードのDSN情報を取得するために使用されるInitial Connection の設定が必要です。 pglogical 拡張機能をすべてのデータベースにインストールする必要があります。

  • bdr すべてのデータ接続が同じPGDクラスターからのノードであると仮定します。 Table Filter -> replication_sets 設定の使用を有効にして、使用するテーブルのリストを指定します。また、 node_name を使用してデータ接続を指定できるようにします。これには、ノードのDSN情報を取得するために使用されるInitial Connection の設定が必要です。すべてのデータベースにpglogical およびbdr 拡張機能をインストールする必要があります。

all_bdr_nodes#

logical_replication_mode がbdr に設定されている場合、初期接続のみを指定し、LiveCompareにアクティブなPGDノードの現在のリストに基づいて接続リストを構築させることができます。デフォルトoff

max_Parallel_workers#

考慮する並列プロセスの数。各プロセスは、キューからテーブルで動作します。 デフォルト2

重要

各プロセスはN+1のオープン接続を保持します。1つは各データ接続に、もう1つは出力データベースにです。

buffer_size#

すべてのデータ取得操作でテーブルから取得する行数。 デフォルト4096

log_level#

ログファイルの詳細レベル。可能な値 debug 、info 、warning 、またはerror 。 デフォルトinfo

data_fetch_mode#

LiveCompareがデータベースからデータを取得する方法に影響します。

  • prepared_statements データの取得にプリペアドステートメントLIMIT を使用したクエリーを使用します。毎回、非常に少量のデータデフォルトではbuffer_size = 4096 行のみが取得されるため、3つのモードすべての中で最も影響が最も小さく、同じ理由でより安全な取得モードです。非同期データの取得を許可しますparallel_data_fetch で定義されます。一般的なユースケースでは、この取得方法は良好なパフォーマンスを提供しますが、大規模なテーブルではパフォーマンスの低下が感じられる場合があります。これはデフォルトであり、サーバー負荷が中〜高の場合に強くお勧めします。

  • server_side_cursors_with_hold データの取得にはサーバーサイドカーソル WITH HOLD を使用します。テーブルデータは単一のトランザクションで取得されるため、 xmin が抑制され、肥大化とレプリケーションの問題が発生し、 VACUUM の正常な実行を妨げる可能性があります。また、 WITH HOLD 句は、クエリをマテリアライズするようにPostgresに指示するため、ワーカーはデータがマテリアライズされるまで数秒ハングする可能性がありますため、テーブルデータ全体がRAMを消費し、一時ファイルとしてPostgresサイドディスクに保存できます。 buffer_size を少し増やすことにより、この影響をすべて軽減できます。非同期データの取得を許可しますparallel_data_fetch で定義されます。一般的な使用ケースでは、この取得方法はprepared_stataments と比較してメリットはありませんが、複数の小さなテーブルの場合、より高速です。ただし、このモードは、テストや移行シナリオなど、負荷が非常に低い場合にのみお勧めします。

  • server_side_cursors_without_hold データの取得にサーバーサイドカーソル WITHOUT HOLD を使用します。 server_side_cursors_with_hold と同様、このモードはxmin を抑制することもできるため、Postgresでの肥大化、VACUUM 、およびレプリケーションの問題を発生させる可能性があります。ただし、 WITHOUT HOLD カーソルは、比較セッション全体でオープンなトランザクションを必要とするため、このような影響はより高くなります。この要件は、後のバージョンで解除されます。スナップショットは比較セッション全体で保持されるため、ユースケースによっては、比較結果が役立つ場合があります。クエリは実体化されないため、メモリ使用量と一時ファイルの生成は低いままです。非同期データの取得は許可されていません。パフォーマンスの面では、このモードは一般的なユースケースでは遅くなりますが、大規模なテーブルの場合、このモードの方が速くなる場合があります。データベースの負荷が低〜中程度の場合にお勧めします。

重要

適切なシナリオに適切な`data_fetch_mode` を選択することは非常に重要です。準備されたステートメントを使用すると、データベースサーバーのフットプリントが最小になるため、最も安全なアプローチであり、一般的なユースケースに適しています。もう1つのポイントは、準備されたステートメントを使用すると、LiveCompareが常に最新バージョンの行を参照できるということですが、これは、ビジー状態のデータベースでサーバーサイドのカーソルを使用している場合には発生しない場合があります。したがって、実稼働の高負荷サーバーには`prepared_statements` を使用し、テスト、移行シナリオ、低負荷サーバーには`server_side_cursors_*` 設定のいずれかを使用することをお勧めします。最良の戦略は、おそらく、非常に大規模なテーブルに`server_side_cursors_without_hold` を使用し、残りのテーブルに`prepared_statements` を混合することです。次の表は、費用/便益比の比較を示しています。

prepared_statements

server_side_cursors_with_hold

server_side_cursors_without_hold

xmin hold

very low

medium

high

xmin released per

buffer

chunk

whole comparison session

temp files

very low

very high

low

memory

very low

high

low

allows async conns

yes

yes

no

fastest for

general

small tables

large tables

recommended load

high

very low

low-medium

~~parallel_chunk_rows ~~#

LiveCompare 3.0で削除されました。この設定が.ini ファイルに存在する場合、LiveCompare 3.0でファイルを使用する前に削除します。

repair_data_fetch#

データの取得を並列的に実行するかどうか、つまり、データベースへの非同期接続を使用するかどうかを指定します。多方向比較のパフォーマンスが向上します。 PostgreSQLではないデータ接続がある場合、この設定は自動的に無効になります。 data_fetch_mode = prepared_statements またはdata_fetch_mode = server_side_cursors_with_hold の場合にのみ許可されます。デフォルトon

comparison_algorithm#

LiveCompareがテーブル行を介してデータを比較する方法に影響します。ハッシュを使用すると、完全な行比較よりも高速です。次のいずれかの値を取ります。

  • full_row ハッシュを使用した行比較を無効にします。この場合、完全な比較は、行を列ごとに比較することにより実行されます。 Oracle 10gデータベースを含む比較の場合、full_row はcomparison_algorithm パラメーターの唯一の有効な値です。

  • row_hash ハッシュを使用した行比較を有効にし、テーブルの分割を有効にします。テーブルは分割されているため、各ワーカーはテーブルごとの最大parallel_chunk_rows を比較します。 PostgreSQLではデータ行がハッシュされるため、比較はfull_row よりも高速です。ただし、特定の行のハッシュが一致しない場合、その特定の行に対して、LiveCompareはfull_row アルゴリズムにフォールバックしますつまり、行ごとに比較します。データ接続がPostgreSQLではない場合、LiveCompareは、検討中の行の連結列値のMD5ハッシュとして定義された行ハッシュ、比較対象のデータベーステクノロジー間の 共通ハッシュ を使用します。

  • block_hash 動作はrow_hash と同じですが、行ごとに比較する代わりに、LiveCompareは ブロックハッシュ 、つまり取得したばかりのデータバッファ内のすべての行のハッシュのハッシュをビルドします最大buffer_size 行)。概念的には、2レベルのマークルツリーのように機能します。ブロックのハッシュが一致する場合、LiveCompareはブロック全体を進めます。これが、この比較アルゴリズムがrow_hash よりも高速である理由です。ブロックハッシュが一致しない場合、LiveCompareはrow_hash にフォールバックし、バッファーで行ごとに比較を実行して、発散する行を見つけます。これはデフォルト値です。

min_time_between_heart_beats#

ハートビート メッセージをログに記録するまでに待機する秒単位の時間。各ワーカーは、比較されるラウンドパーツごとに個別に追跡します。デフォルト30秒。

min_time_between_round_saves#

比較アルゴリズムが進行中のときに各ラウンドの状態を更新するまで待機する秒単位の時間。ラウンド保存はハートビート中にのみ発生できるため、 min_time_between_round_saves はmin_time_between_heart_beats 以上である必要があります。ラウンドが終了すると、LiveCompareは常にそのテーブルのラウンドの状態を更新します。デフォルト60秒。

重要

**Ctrl-C**を押してLiveCompareの実行をキャンセルし、再度開始すると、LiveCompareはラウンドの状態が保存されたポイントからそのテーブルのラウンドを再開します。

repair_cost_limit#

0の場合、comparison_cost_delay 秒の昼寝をする前に各ワーカーが処理する行数に対応します。デフォルト0は、各ワーカーが昼寝をせずに行を処理することを意味します。

repair_cost_deploy#

comparison_cost_limit > 0 の場合、この設定は各ワーカーのスリープ時間を指定します。デフォルト0.0

stop_after_time#

Ctrl-C を押したかのようにLiveCompareが停止する秒単位の時間。コマンドラインの引数としてセッションIDを渡すことにより、中断された比較セッションがまだ終了していない場合は再開できます。デフォルトstop_after_time = 0 、これは自動中断が無効であることを意味します。

consensus_mode#

LiveCompareがどのデータ接続が発散しているかを判断するために使用されるコンセンサスアルゴリズム。使用可能な値はoff 、simple_majority 、quorum_based 、またはsource_of_truth です。 consensus_mode = source_of_truth の場合、 difference_sources_of_truth を入力する必要があります。デフォルトsimple_majority

注釈

consensus_mode = off および`comparison_algorithm = block_hash` の場合、LiveCompareはより詳細な比較アルゴリズムに切り替えません。これにより、特定のテーブルで発散が見つかった場合のパフォーマンスが大幅に向上しますが、どの行が発散しているかに関する情報が不足します。その後、ユーザーはLiveCompareを再度実行して発散テーブルがある場合を`[Table Filter]` に追加し、発散テーブルのみを比較して、どの行が発散しているかに関する情報を取得できます。

destination_required_quorum#

consensus_mode = quorum_based の場合、この設定は、どの接続が発散しているかを決定するために必要な最小クォーラムを指定します。 0.0〜1.0の数値である必要があります。 0.0は接続が必要ないことを意味し、1.0はすべての接続が必要であることを意味します。どちらの場合も極端であるため、使用をお勧めしません。デフォルト値は0.5であり、それに近い値を使用することをお勧めします。

destinations_of_truth#

真のソースとして考慮する接続名またはノード名、logical_replication_mode = bdr およびall_bdr_nodes = on の場合、コンマ区切りのリスト。 consensus_mode = source_of_truth の場合にのみ使用されます。例 difference_sources_of_truth = node1,node2 この例では、セクションnode1 Connection およびnode2 Connection のいずれかを.ini ファイルまたはall_bdr_nodes = on で定義する必要があり、Initial Connection のみが定義されますが、 node1 およびnode2 は有効なPGDノード名である必要があります。

destination_tie_migrates#

コンセンサスアルゴリズムがタイ状況を見つけたときは常に、タイブレーカーとして考えられる接続名またはノード名、logical_replication_mode = bdr およびall_bdr_nodes = on の場合、コンマ区切りのリスト。例 difference_tie_breakers = node1,node2 この例では、セクションnode1 Connection およびnode2 Connections のいずれかを.ini ファイルまたはall_bdr_nodes = on で定義する必要があり、Initial Connection のみが定義されますが、 node1 およびnode2 は有効なPGDノード名である必要があります。デフォルト 接続をタイブレーカーとして考慮しません。

destination_statements#

LiveCompareが生成するDMLステートメントの種類を制御します。 difference_statements の値は次のいずれかです。

  • all デフォルト

  • inserts

  • updates

  • deletes

  • inserts_updates

  • inserts_deletes

  • updates_deletes

destination_allow_null_updates#

UPDATE SET col = NULL のようなコマンドを差分レポートで許可するかどうかを決定します。 デフォルトon

destination_statement_order#

LiveCompareが生成するDMLステートメントの順序を制御します。 difference_statement_order の値は次のいずれかです。

  • delete_insert_update

  • delete_update_insert デフォルト

  • insert_update_delete

  • insert_delete_update

  • update_insert_delete

  • update_delete_insert

destination_fix_replication_origin#

PGDデータベースを使用する場合、差分のために、LiveCompareは特定のレプリケーションオリジンがまだ存在しない場合は作成します。次に、レプリケーションオリジンを使用して、DML修正を含む適用スクリプトを作成します。 difference_fix_replication_origin は、LiveCompareが使用するレプリケーションオリジンの名前を指定します。この設定の値を設定しない場合、LiveCompareはdifference_fix_replication_origin = bdr_local_only_origin を設定します。 LiveCompareが作成するレプリケーションオリジンは、比較後の検証を可能にするためにドロップされません。ただし、必要に応じて、後でレプリケーションオリジンを手動でドロップできます。 logical_replication_mode = bdr が必要です。

重要

PGD 3.6.18では、ローカル専用トランザクションを適用するために使用する新しい事前作成された`bdr_local_only_origin` レプリケーションオリジンを導入しました。したがって、LiveCompareがPGD 3.6.18に接続されている場合、このレプリケーションオリジンは作成されないため、このレプリケーションオリジンを削除しないことをお勧めします。

destination_fix_start_query#

LiveCompareによって生成された適用スクリプトの先頭で実行される任意のクエリー。さらに、 PGD比較が実行されており、difference_fix_start_query が空の場合、LiveCompareは次のことも自動的に行います。

  • 発散接続がPGD 3.6.7の場合、 SET LOCAL bdr.xact_replication = off; を追加します

  • difference_fix_replication_origin で指定されたレプリケーションオリジンを使用するようにトランザクションを設定するコマンドを追加します

show_progress_bars#

コンソール出力に進行状況バーを表示するかどうかを決定します。この設定を無効にすると、バッチ実行に役立つ場合があります。 デフォルトon

Output_schema#

出力接続で、比較レポートテーブルが作成されるスキーマ。 デフォルトlivecompare

hash_column_name#

すべてのデータの取得には、行内のすべての実際の列のハッシュである特定の列が含まれます。この設定は、この列の名前を指定します。 デフォルトlivecompare_hash

rownumber_column_name#

一部の取得では、クエリ列内でrow_number() ファンクション値を使用する必要があります。この設定は、この列の名前を指定します。デフォルトlivecompare_rownumber

fetch_row_origin#

この設定が有効になっている場合、LiveCompareは各発散行のオリジン名を取得します。これは、デバッグの目的で役立つ場合があります。有効にするには、logical_replication_mode をpglogical またはbdr に設定する必要があります。デフォルトoff

column_intersection#

この設定が有効になっている場合、比較される特定のテーブルについて、LiveCompareはすべての接続でテーブルの列の交差点でのみ動作し、接続に存在する可能性のある追加の列を無視します。この設定が無効になっている場合、LiveCompareは、すべての接続のテーブルで列が同等であるかどうかを確認し、列の不一致がある場合はテーブルの比較を中止します。デフォルトoff

重要

テーブルにPKがある場合、 column_intersection = on であっても、PK列は異なることはできません。

ignore_nullable#

特定のテーブル比較で、LiveCompareが主キーとは異なる比較キーを使用している場合、LiveCompareはignore_nullable が有効になっているデフォルトの場合、すべての列をNOT NULL にする必要があります。 ignore_nullable = off を設定することにより、その動作をオーバーライドできます。これにより、LiveCompareは比較でNull許容列を考慮できます。これは、一部のコーナーケースで偽陽性を生成する可能性があります。

check_uniqueness_enforcement#

LiveCompareがユーザー定義の比較キーを使用しているか、テーブル内のすべての列を比較キーとして使用している場合、 LiveCompareはcheck_uniqueness_enforcement 設定が有効になっているデフォルトで比較キーでテーブルの一意性をチェックします。

oracle_ignore_unsortable#

有効にすると、列がテーブルPKの一部でない場合、Oracleのソート不可データ型BLOB、 CLOB、NCLOB、BFILEの列を無視するようにLiveCompareに指示します。この設定を有効にする場合、 column_intersection も有効にすることをお勧めします。

oracle_user_tables_only#

有効にすると、Oracleにログインしているユーザーからのみテーブルメタデータを取得するようにLiveCompareに指示します。このアプローチは、たとえば、sys.all_tables およびsys.all_tab_columns の代わりにsys.user_tables およびsys.user_tab_columns から読み取るため、高速です。 デフォルトoff

oracle_fetch_fk_metadata#

有効にすると、外部キーメタデータを取得するようにLiveCompareに指示します。これは、低速な操作になる場合があります。 Oracle接続のfetch_fk_metadata 設定の値をオーバーライドします。 デフォルトoff

schema_qualified_table_names#

この設定が有効になっている場合、テーブル名はスキーマ修飾されたものとして扱われます。これを無効にすると、スキーマ修飾テーブル名を使用せずにテーブルを比較できます。 Oracle x Postgresの比較では、oracle_user_tables_only も有効にする必要があります。 Postgres x Postgresでは、同じデータベース内でも、異なるスキーマの下にあるテーブルの比較ができます。また、 schema_qualified_table_names が有効になっている場合、 Table Filter -> tables 、Row Filter 、およびColumn Filter は、スキーマ名のないテーブル名を許可します。 デフォルトon

~~force_collate ~~#

LiveCompare 3.0で削除されました。この設定が.ini ファイルに存在する場合、LiveCompare 3.0でファイルを使用する前に削除します。

work_directory#

LiveCompare 作業ディレクトリへのパス。出力ファイルを含むセッションフォルダーがこのディレクトリに作成されます。 デフォルト. 現在のディレクトリ。

abort_on_setup_error#

有効にすると、テーブル比較ラウンドを設定しようとしたときにLiveCompareがエラーを発生すると、比較セッション全体が中止されます。 デフォルトoff

重要

abort_on_setup_error 設定は`compare` モード中にのみ考慮されます。 recheck モードでは、LiveCompareは常にセットアップの最初のエラーで強制終了します。

custom_dollar_quoting_delimiter#

LiveCompareは違いを見つけると、文字列にドル引用符を使用してDMLを出力します。デフォルトの動作では、ランダムな文字列を作成して構成します。どうしてもカスタムのものを使用したい場合は、このパラメーターを使用する区切り文字として設定できます。定数のみを設定する必要があり、定数の周囲の$ シンボルは設定する必要はありません。 デフォルトoff 、これはLiveCompareがワードLiveCompare のmd5 ハッシュを使用することを意味します。

session_replication_role_replica#

有効にすると、LiveCompareはsession_replication_role PostgreSQL設定を出力適用スクリプトでreplica として使用します。これは、発散があるノードでDMLを適用しているときにトリガーとルールが起動されないようにしたい場合に役立ちます。これを有効にするには、PostgreSQLのスーパーユーザーが必要です。それ以外の場合、効果はありません。 デフォルトoff

Split_updates#

有効にすると、LiveCompareはUPDATE 発散を分割します。つまり、UPDATE DMLを生成する代わりに、適用スクリプトで対応するDELETE およびINSERT を生成します。 デフォルトoff

float_point_round#

データベースからの浮動小数点値を比較するときにLiveCompareが丸める10進数を指定する整数 データベースデフォルト-1 、浮動小数点の四捨五入を無効にします。