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デフォルトinsertsupdatesdeletesinserts_updatesinserts_deletesupdates_deletes
destination_allow_null_updates#
UPDATE SET col = NULL
のようなコマンドを差分レポートで許可するかどうかを決定します。
デフォルトon
destination_statement_order#
LiveCompareが生成するDMLステートメントの順序を制御します。
difference_statement_order の値は次のいずれかです。
delete_insert_updatedelete_update_insertデフォルトinsert_update_deleteinsert_delete_updateupdate_insert_deleteupdate_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 、浮動小数点の四捨五入を無効にします。