PGD settings#

PGD固有の構成設定を設定できます。特に断りのない限り、値はいつでも設定できます。

競合処理#

bdr.default_conflict_detection#

新しく作成されるテーブルのデフォルトの競合検出方法を設定します。 bdr.alter_table_conflict_detection() と同じ値を受け入れます。

グローバルシーケンスパラメーター#

bdr.default_sequence_kind#

デフォルトの Global sequence management interfaces を設定します。

デフォルトはdistributed で、これは、 snowflakeid がint8 シーケンスつまりbigserial に使用され、int4 つまりserial およびint2 シーケンスのgalloc シーケンスに使用されることを意味します。

DDL処理#

bdr.default_replica_identity#

新しく作成されるテーブルにREPLICA IDENTITY のデフォルト値を設定します。 REPLICA IDENTITY は、更新または削除された行を識別するためにログ先行書き込みに書き込まれる情報を定義します。

受け入れられる値は次のとおりです。

Value

Description

default

主キーの列の古い値がある場合は、それを記録しますこれはデフォルトのPostgreSQL動作です。

full

行内のすべての列の古い値を記録します。

nothing

古い行に関する情報は記録しません。

auto

PKを使用するテーブルはREPLICA IDENTITY DEFAULTで作成され、PKのないテーブルはREPLICA IDENTITY FULLで作成されます。これはデフォルトのPGD動作です。

詳細は、 PostgreSQL documentation を参照してください。

PGDは、 PRIMARY KEY またはUNIQUE 制約のないテーブルでUPDATE およびDELETE オペレーションをレプリケートできません。例外は、テーブルのレプリカIDがテーブル固有の構成またはbdr.default_replica_identity によるFULL の場合です。

bdr.default_replica_identity がdefault で、テーブル定義にUNIQUE 制約が含まれている場合、REPLICA IDENTITY として自動的に選択されません。 ALTER TABLE ... REPLICA IDENTITY ... を使用してREPLICA IDENTITY を明示的に設定する必要があります。

テーブルのレプリカIDをfull に設定すると、テーブルのワイヤに書き込まれるWALの量とレプリケートされるデータの量が増加します。

ALTER SYSTEM SET bdr.default_replica_identity="default";

デフォルトの引用符なしは、構成ファイルから設定の削除をトリガーする ALTER SYSTEM コマンドの特別な値であるため、引用符を含める必要があります。設定が削除されると、システムはPGDのデフォルト設定であるauto を使用します。

ノード間でDDLを自動的にレプリケートしますデフォルトはon です。

このパラメーターは、 bdr_superuserまたはsuperuserロールによってのみ設定できます。

DDLを実行するか、 bdr.ddl_replication = off を使用してPGD管理機能を呼び出すと、管理者が介入できるまでレプリケーションが停止する状況が発生する場合があります。詳細は、 DDLレプリケーションフィルタリング を参照してください。

bdr.ddl_replication がoff に設定されている場合は常に、 LOG レベルのログメッセージがPostgreSQLサーバーログに出力されます。さらに、キャプチャされたDDLコマンドまたはPGDレプリケーションファンクションのレプリケーションがこの設定によりスキップされるたびに、 WARNING-level メッセージが書き込まれます。

bdr.role_replication#

ノード全体でROLEコマンドを自動的にレプリケートしますデフォルトはon です。スーパーユーザーのみがこのパラメーターを設定できます。この設定は、 bdr.ddl_replication もオンになっている場合にのみ機能します。

外部方法を使用せずにこのパラメーターをオフにして、すべてのノードでロールが同期していることを確認すると、管理者が介入するまでレプリケートDDLがレプリケーションを中断する場合があります。

DDL and role manipulation statements を参照してください

詳細については。

bdr.ddl_locking#

DDLのグローバルロックの操作モードを構成します。

このパラメーターは、 bdr_superuserまたはsuperuserロールによってのみ設定できます。

考えられるオプションは次のとおりです。

Value

Description

all

すべてのDDL操作にグローバルロックを使用します。デフォルト

dml

リレーションのグローバルDMLロックを取得することにより書き込みを防止する必要があるDDL操作にのみグローバルロックを使用します。

off

DDL操作にはグローバルロックを使用しないでください。

デフォルトはall です。

bdr.ddl_replication がoff に設定されている場合は常に、 LOG レベルのログメッセージがPostgreSQLサーバーログに出力されます。さらに、この設定によりグローバルロックステップがスキップされるたびに、 WARNING メッセージが書き込まれます。一部のステートメントでは、2つのWARNING メッセージが発生するのが通常です。1つはDMLロックをスキップし、もう1つはDDLロックをスキップします。

下位互換性のため、bdr.ddl_locking はエイリアスをサポートしています。 on およびtrue は、all のエイリアスです。 false は、off のエイリアスです。

グローバルロック も参照してください。

bdr.truncate_locking#

TRUNCATEコマンドのロック動作を設定しますデフォルトはoff です。 true の場合、 TRUNCATEはbdr.ddl_locking 設定に従います。

グローバルロック#

DDLロックは、 bdr.ddl_locking によって制御されます。その他のグローバルロック設定には次のものが含まれます。

bdr.global_lock_max_locks#

ノードで保持できるグローバルロックの最大数を設定しますデフォルトは1000です。 Postgresサーバー起動時にのみ設定できます。

bdr.global_lock_timeout#

グローバルロックの待機の最大許可時間を設定しますデフォルトは10分です。値0はこのタイムアウトを無効にします。

bdr.global_lock_statement_timeout#

グローバルロックを保持するステートメントの最大許可期間を設定しますデフォルトは60分です。値0はこのタイムアウトを無効にします。

bdr.global_lock_idle_timeout#

グローバルロックを保持するトランザクションのアイドル時間の最大許可期間を設定しますデフォルトは10分です。値0はこのタイムアウトを無効にします。

bdr.lock_table_locking#

LOCK TABLEステートメントのロック動作を設定しますデフォルトはオフです。 LOCK TABLEステートメントは有効にすると、クラスターでグローバルDMLロックを取得し、他のロックステートメントをブロックします。

Value

Description

on

すべてのテーブルロックにグローバルロックを使用します。

off

テーブルロックにグローバルロックを使用しないでください。デフォルト

bdr.predictive_checks#

予測チェックのログレベルを設定します現在グローバルロックによってのみ使用されます。 DEBUG 、LOG 、WARNING デフォルト、またはERROR です。予測チェックは、特定の操作を実行するときに予想されるクラスター状態の早期検証です。タイムアウトを待機するのではなく、早期フェイルのこれらの操作に使用できます。グローバルロック用語では、 PGDは、接続されている十分なノードがあり、グローバルロックに必要なクォーラムを取得するための妥当な遅延制限内であることをチェックします。

ノード管理#

bdr.replay_progress_frequency#

レプリケーション位置情報をクラスターの残りの部分に送信する間隔を設定しますデフォルトは1分です。

bdr.standby_slot_names#

他のスロットよりも前にレプリケーションの変更を受信して確認するために必要なスロットを設定します。この設定は、主にフェールオーバーにフィジカルスタンバイを使用する場合、またはサブスクライブ専用ノードを使用する場合に役立ちます。

汎用レプリケーション#

bdr.writers_per_subscription#

サブスクリプションごとのライターのデフォルト数を設定します。 PGDでは、グループのbdr.alter_node_group_option を使用してこれを変更することもできます。

bdr.max_writers_per_subscription#

サブスクリプションごとのライターの最大数 bdr.writers_per_subscription 設定の上限を設定します。

bdr.xact_replication#

現在のトランザクションをレプリケートしますデフォルトはon です。

これをオフにすると、トランザクション全体がローカルのみになります。つまり、トランザクションは、 PGDによる論理デコードおよび論理デコードのその他のすべてのダウンストリームターゲットから可視されません。データは、ロジカルスタンバイノードを含む他のノードに転送されません。

このパラメーターは、 bdr_superuserまたはsuperuserロールによってのみ設定できます。

このパラメーターは、 bdr.permit_unsafe_commands = on を除き SET LOCAL コマンドを使用して現在のトランザクション内でのみ設定できます。

注釈

トランザクションレプリケーションを無効にしてもWALは生成されますが、これらの変更はオリジンでフィルタリングされます。

警告

bdr.xact_replication をオフにすると、ノード間でデータの不一貫性が発生します。ノード間のデータの相違からリカバリーするため、またはレプリケーションを続行するために単一ノードの変更が必要なレプリケーション状況にのみ使用します。自分の責任で使用してください。

bdr.permit_unsafe_commands#

一般的な使用には安全でないと考えられるコマンドの安全性チェックをオーバーライドします。

bdr_superuserまたはPostgreSQLスーパーユーザーが必要です。

警告

通常安全だと考えられていないコマンドは、一貫性のない結果を生成するか、レプリケーションを完全に中断する可能性があります。自分の責任で使用してください。

bdr.batch_inserts#

1つのテーブルの挿入のバッチ処理をオンにする単一のトランザクションでの1つのテーブルへの連続した挿入の数。

この設定では、大規模なデータのレプリケーションを、挿入のセットとしてではなく、内部のCOPYとしてロードできます。これは、ノード参加中の初期データのコピー方法でもあります。

bdr.maximum_lock_skew#

bdr.maximum_clock_skew_action をトリガーする前に、受信トランザクションコミットタイムスタンプとサブスクライバーの現在時間の最大差を指定します。

現在再生されているトランザクションのタイムスタンプが、サブスクライバーの現在時刻と比較して将来的であるかどうかを確認します。その場合、その差がbdr.maximum_clock_skew より大きい場合、bdr.maximum_clock_skew_action 設定で指定されたアクションを実行します。

デフォルトは-1 で、これはクロックスキューを無視するチェックがオフになることを意味します。すべてのサーバーの時計が同期している場合、0を設定するのが有効です。トランザクションが再生されているという事実は、過去にコミットされたことを意味します。

bdr.maximum_lock_skew_action#

bdr.maximum_clock_skew より高いクロックスキューが検出された場合に実行するアクションを指定します。

この設定には2つの値があります。

Value

Description

WARN

このファクトに関する警告をログに記録します。警告は、サーバーログの氾濫を防ぐために、最大1分に1回ログに記録されます。

WAIT

現在のローカルタイムスタンプがリモートコミットタイムスタンプから`bdr.maximum_clock_skew`を引いたものより古くなくなるまで待機します。

bdr.accept_connections#

PGDへの接続を有効または無効にしますデフォルトはon です。

bdr_superuserまたはPostgreSQLスーパーユーザーが必要です。

bdr.standby_slot_names#

この設定は通常、フェールオーバー構成で使用され、このPGDノードのフェールオーバー候補ストリーミング物理レプリカが、サブスクライバーに可視される前にすべての変更を受信およびフラッシュしていることを保証します。これにより、プロバイダーのスタンバイへのフェールオーバー時にコミットが消えないことが保証されます。

コンマ区切りのbdr.standby_slot_names リストに名前がリストされているレプリケーションスロットは、PGDノードのWAL送信側によって特別に扱われます。

PGDの論理レプリケーションWALセンダーは、ノードがこれらの変更を他のPGDレプリケーションクライアントに送信する前に、すべてのローカル変更がbdr.standby_slot_names のレプリケーションスロットに送信およびフラッシュされるようにします。事実上、スロットの名前付けリストと他のすべてのレプリケーションクライアントの間に同期レプリケーションバリアを提供します。

bdr.standby_slot_names には、任意のレプリケーションスロットをリストできます。論理スロットと物理スロットの両方が機能しますが、通常は物理スロットに使用されます。

この安全対策がないと、サブスクライバーがコミットを受信し、フェールオーバー候補がまだそれを受け取っていないため、フェールオーバー時にプロバイダーから消える2つの異常が発生する可能性があります。

  • 1+加入者の場合、加入者は変更を適用した可能性がありますが、新しいプロバイダーは、プロバイダーに関する限り決して起こらなかったため、受け取った変更と競合する新しいトランザクションを実行する可能性があります。

  • 2つ以上のサブスクライバーの場合、フェールオーバー時に、すべてのサブスクライバーが変更を適用しているわけではありません。コミットを受け取らなかったサブスクライバーにはそれを取得する方法がないため、サブスクライバーは一貫性のない調整不能な状態になります。

デザインによってbdr.standby_slot_names を設定すると、リストされたノードの必要な数が追いついていない場合、そこにリストされていない他のサブスクライバがプロバイダーに遅れをとります。したがって、モニタリングは重要です。

bdr.standby_slot_names が役立つもう1つのユースケースは、サブスクライバー専用ノードを使用して、通常のPGDノードより先に移動しないことを確認する場合です。これは、 bdr.standby_slots_min_confirmed を少なくとも1に設定することと、すべての通常のPGDピアノードの論理スロットをリストすることにより、最適に達成できます。

bdr.standby_slots_min_confirmed#

PGDサブスクライバーにデータを送信する前に確認する必要があるbdr.standby_slot_names の数を制御します。

bdr.writer_input_queue_size#

レシーバーがライタプロセスにデータを送信するために使用する共有メモリキューのサイズを指定します。ライタプロセスが停止しているか、進行が遅い場合、キューがいっぱいになり、受信側プロセスも停止する可能性があります。したがって、このキューに十分な共有メモリを提供することが重要です。デフォルトは1MBで、最大許可サイズは1GBです。 GUCの設定には任意のストレージサイズ指定子を使用できますが、デフォルトはKBです。

bdr.writer_output_queue_size#

レシーバーがライタプロセスからデータを受信するために使用する共有メモリキューのサイズを指定します。ライタは大量のデータを送信することは想定されていないため、比較的小さいサイズのキューで十分です。デフォルトは32KBで、最大許可サイズは1MBです。 GUCの設定には任意のストレージサイズ指定子を使用できますが、デフォルトはKBです。

bdr.min_worker_backoff_migrate#

特定のワーカーがbdr.min_worker_backoff_delay ミリ秒ごとよりも頻繁に再起動されないようにすることにより、PGDバックグラウンドワーカー起動のレート制限が可能です。エラーが繰り返されると、バックオフが指数関数的に増加し、最大bdr.max_worker_backoff_delay までジッターが追加されます。

時間単位のサフィックスがサポートされています。

注釈

この設定は現在レシーバーワーカーにのみ影響します。つまり、主にエラーまたは接続障害が発生したときにサブスクリプションが再接続を試行する速度に影響を与えます。

bdr.min_worker_backoff_delay のデフォルトは1秒です。 bdr.max_worker_backoff_delay の場合、1分です。

バックオフ遅延設定が変更され、PostgreSQL構成がリロードされると、現在のすべてのバックオフがリセットを待機します。さらに、 bdr.worker_task_reset_backoff_all() ファンクションは、管理者がすべてのバックオフインターバルを強制的にすぐに有効期限が切れるように提供されています。

共有メモリ内の追跡テーブルは、各種類のワーカーの最終起動時刻を記憶するために維持されます。この追跡テーブルは永続的ではありません。これは、汚れたバックエンド終了後のクラッシュリカバリー中のソフトリスタートを含む、PostgreSQLの再起動によってクリアされます。

ビュー bdr.worker_tasks を使用してこの状態を検査できるため、管理者は、現在有効になっているバックオフレート制限を確認できます。

レート制限の目的で、ワーカーはタスクによって分類されます。このキーは、ワーカーロール、データベースOID、サブスクリプションID、サブスクリプションライタID、拡張ライブラリ名とファンクション名、拡張機能提供のワーカー名、および同期ライターのリモートリレーションIDで構成されています。 NULL は、特定の分類子が適用されない場合、たとえば、マネージャーワーカーがサブスクリプションIDがなく、レシーバーがライタIDがない場合に使用されます。

CRDT#

bdr.crdt_raw_value#

CRDTデータ型を使用した列レベルの競合の処理 の出力フォーマットを設定します。

デフォルト出力この設定がoff の場合、ベースCRDTタイプの現在値のみを結果ことができます、たとえば、crdt_pncounter のbigint。 on に設定されている場合、戻り値はCRDT値の完全な表現を表します。これには、たとえば、マルチプルのノードからの状態を含めることができます。

コミットスコープ#

bdr.commit_scope#

現在またはデフォルトの コミットスコープのモニタリング を設定しますデフォルトは空の文字列です。

Commit At Most Once#

bdr.camo_local_mode_deploy#

CAMOの非同期モードで適用され、 CAMOパートナーがトランザクションを確認する必要があるときに通常発生するオーバーヘッドをエミュレートするコミット遅延デフォルトは5ミリ秒です。この機能を無効にするには、 0 に設定します。

bdr.camo_enable_client_warnings#

CAMOプロパティを保証できないデータベースでアクティビティが実行された場合、警告を発しますデフォルトが有効になっています。十分な情報のあるユーザーは、この設定を無効にして、ログに記録される警告の量を減らすことができます。

トランザクションストリーミング#

bdr.default_streaming_mode#

サブスクライバノードによるトランザクションストリーミングを制御します。使用可能な値はoff 、writer 、file 、およびauto です。デフォルトauto 。 off に設定されている場合、サブスクライバーはトランザクションストリーミングを要求しません。他の値に設定されている場合、サブスクライバーはトランザクションストリーミングを要求し、パブリッシャーはそれをサポートしている場合、およびグループレベルで構成されている場合にそれを提供します。詳細については、 トランザクションストリーミングでの使用 を参照してください。

遅延制御#

bdr.lag_control_max_commit_deploy#

ミリ秒単位での許容できる最大許容コミット後遅延。

bdr.lag_control_max_lag_size#

許容できる最大許容遅延サイズキロバイト単位。

bdr.lag_control_max_lag_time#

ミリ秒単位の許容できる最大許容遅延時間。

bdr.lag_control_min_conforming_nodes#

許容可能な遅延測定値を下回るように必要なノードの最小数。

bdr.lag_control_commit_deploy_adjust#

最大コミット遅延時間の一部として測定されるコミット遅延のマイクロ調整。デフォルト値の0.01%では、最大コミット遅延に到達するまでに100ネットインクリメントが必要です。

bdr.lag_control_sample_interval#

ミリ秒単位の遅延サンプルとコミット遅延マイクロ調整間の最小時間。

bdr.lag_control_commit_deploy_start#

コミット遅延インクリメントが適用され始める遅延しきい値。許容可能な遅延尺度の割合で表されます。デフォルト値の1.0%では、許容可能な遅延測定値に違反するまでコミット遅延のインクリメントは開始されません。

より小さい分数を設定することにより、許容可能な遅延尺度に漸近するように早期に「遅延曲線を曲げる」ことにより、違反を防止できる場合があります。

タイムスタンプベースのスナップショット#

bdr.timestamp_snapshot_keep#

タイムスタンプベースのスナップショット使用の有効なスナップショットを保持する時間デフォルトは0 、過去のスナップショットを保持しないことを意味します。

モニタリングとロギング#

bdr.debug_level#

PGDがデバッグメッセージを書き込むために使用するログレベルを定義します。デフォルト値はdebug2 です。詳細なPGDデバッグ出力を表示する場合は、 bdr.debug_level = 'log' を設定します。

bdr.trace_level#

bdr.debug_level と同様に、 PGDトレースメッセージに使用するログレベルを定義します。 EDB Postgres分散クラスターのすべてのノードでトレースを有効にすると、EDBサポートが問題を診断するのに役立つ場合があります。このパラメーターは、Postgresサーバーの起動時にのみ設定できます。

警告

bdr.debug_level または`bdr.trace_level` を値>= log_min_messages に設定すると、非常に大量のログ出力が生成される場合があります。ディスク領域の枯渇を防ぐためにログのフィルタリング、アーカイブ、およびローテーションの計画が策定されていない限り、運用環境では長期的に有効にしないでください。

bdr.track_subscription_apply#

トラックは、 bdr.stat_subscription デフォルトはon を使用した各サブスクリプションの統計を適用します。

bdr.track_relation_apply#

トラックは、 bdr.stat_relation デフォルトはoff とのリレーションごとに統計を適用します。

bdr.track_apply_lock_timing#

bdr.stat_relation デフォルトはoff とのリレーションの統計を追跡するときにロックタイミングを追跡します。

デコードワーカー#

bdr.enable_wal_decoder#

Decoding worker デフォルトはfalseを使用して、単一ノードで論理変更レコードLCR送信を有効にします。 trueに設定すると、デコードワーカープロセスが開始され、WAL送信側は生成したLCRを送信します。 falseに設定し直すと、LCRを使用するWAL送信者が再起動され、WALを直接使用します。

注釈

PGDグループ内のすべてのノードでこの設定を有効にし、グループで`enable_wal_decoder` オプションをtrueに設定する必要があります。

bdr.receive_lcr#

別のノードをサブスクライブする場合、この設定により、ノードはサブスクリプションの論理変更レコードLCRの使用を要求できますデフォルトはfalseです。下流ノードでこの設定がtrueの場合、ノードは上流ノードに送信するときにLCRを使用することを要求します。ノードでbdr.enable_wal_decoder をtrueに設定する場合、この設定もtrueに設定します。

注釈

PGDグループ内のすべてのノードでこの設定を有効にし、グループで`enable_wal_decoder` オプションをtrueに設定する必要があります。

bdr.lcr_cleanup_interval#

論理変更レコードLCRファイルのクリーンアップ間隔デフォルト3分。 Decoding worker が有効になっている場合、デコードワーカーはLCRファイルをバッファとして保存します。これらのファイルは定期的にクリーンアップされ、この設定は2つの連続するクリーンアップ間の間隔を制御します。ゼロに設定すると、クリーンアップが無効になります。

接続設定#

以下は、すべてのクロスノードlibpq 接続に影響を与える接続設定のセットです。デフォルトはかなり保守的な値に設定されており、ほとんどの運用ニーズをカバーします。すべての変数にはSIGHUP コンテキストがあります。これは、リロード時に変更が適用されることを意味します。

bdr.global_connection_timeout#

接続中に待機する最大時間秒単位でデフォルトは15秒です。 10進の整数、たとえば、10として書き込みます。ゼロ、負の数、または指定なしは、無期限に待機することを意味します。最小許可タイムアウトは2秒であるため、値1は次のように解釈されます。

bdr.global_keepalives#

TCPキープアライブを使用するかどうかを制御しますデフォルトは1、オンを意味します。キープアライブが不要な場合は、これを0、つまりオフに変更できます。このパラメーターは、Unixドメインソケットによって作成された接続では無視されます。

bdr.global_keepalives_idle#

TCPがキープアライブメッセージをサーバーに送信するまでの非アクティブな秒数を制御しますデフォルトは1秒です。値0は、システムのデフォルトを使用します。このパラメータは、Unixドメインソケットによって作成された接続、またはキープアライブが無効になっている場合に無視されます。 TCP_KEEPIDLE または同等のソケットオプションが使用可能なシステムでのみサポートされています。他のシステムでは、効果はありません。

bdr.global_keepalives_interval#

サーバーによって確認されなかったTCPキープアライブメッセージを再送信する秒数を制御しますデフォルトは2秒です。値0は、システムのデフォルトを使用します。このパラメータは、Unixドメインソケットによって作成された接続、またはキープアライブが無効になっている場合に無視されます。 TCP_KEEPINTVL または同等のソケットオプションが使用可能なシステムでのみサポートされています。他のシステムでは、効果はありません。

bdr.global_keepalives_count#

サーバーへのクライアントの接続がデッドと見なされる前に、失われる可能性のあるTCPキープアライブの数を制御しますデフォルトは3です。値0は、システムのデフォルトを使用します。このパラメータは、Unixドメインソケットによって作成された接続、またはキープアライブが無効になっている場合に無視されます。 TCP_KEEPCNT または同等のソケットオプションが使用可能なシステムでのみサポートされています。他のシステムでは、効果はありません。

bdr.global_tcp_user_timeout#

接続が強制的に閉じられるまでに、送信されたデータが未確認のままでいられるミリ秒数を制御しますデフォルトは5000、つまり5秒です。 値0は、システムのデフォルトを使用します。このパラメーターは、Unixドメインソケットによって作成された接続では無視されます。 TCP_USER_TIMEOUT が利用可能なシステムでのみサポートされています。他のシステムでは、効果はありません。

トポロジ設定#

bdr.force_full_mesh#

フルメッシュトポロジを強制しますデフォルトはon です。 off に設定されている場合、PGDはサブスクライバ専用グループに最適化されたトポロジを使用しようとします。この設定は、最適化されたトポロジの要件が満たされた場合にのみ有効です。詳細については、 Optimizing subscriber-only groups を参照してください。

内部設定 - Raftタイムアウト#

bdr.raft_global_election_timeout#

ネットワーク障害を説明するために、Raftコンセンサスプロトコルは選択と要求のタイムアウトを実装します。この値は、要求がグローバルトップレベルグループに送信されるときに使用されます。デフォルトは6秒6sです。

bdr.raft_group_election_timeout#

ネットワーク障害を説明するために、Raftコンセンサスプロトコルは選択と要求のタイムアウトを実装します。この値は、要求がサブグループに送信されるときに使用されます。デフォルトは3秒3sです。

bdr.raft_response_timeout#

レスポンスの場合、 bdr.raft_global_election_timeout および bdr.raft_group_election_timeout の設定が必要に応じて使用されます。この変数を設定することにより、この動作をオーバーライドできます。 bdr.raft_response_timeout の設定は、いずれの選択タイムアウト値よりも小さい必要があります。オーバーライドを無効にするには、この変数を-1に設定します。デフォルトは-1です。

内部設定 - その他のRaft値#

bdr.raft_keep_min_entries#

ログ圧縮を行うときにRaftログに保持するエントリの最小数デフォルトは1000 、PGD 5.3以前は100 です。 0 の値は、ログ圧縮を無効にします。このパラメーターは、Postgresサーバーの起動時にのみ設定できます。

警告

ログ圧縮が無効になっている場合、ログのサイズは永久に増加します。

bdr.raft_log_min_apply_duration#

ステートマシンを前進させるために、Raftは内部ログにエントリを追加します。通常オペレーションでは、追加には数ミリ秒しかかかりません。これにより、その追加アクションの期間に上限しきい値が設定され、それを超えると INFO メッセージがログに記録されます。これは問題を示している可能性があります。デフォルトは3000ミリ秒です。

bdr.raft_log_min_message_duration#

コンセンサス要求をログに記録する場合。 PGDコンセンサス要求の往復時間を測定し、時間がこのパラメーターデフォルト5000ミリ秒を超えた場合、INFO メッセージをログに記録します。

bdr.raft_group_max_connections#

PostgresサーバーのすべてのPGDグループの最大接続数デフォルトは100接続です。これらの接続は、グループのノード間でPGDコンセンサス要求を伝送します。このパラメーターは、Postgresサーバーの起動時にのみ設定できます。

内部設定 - その他の値#

bdr.backwards_compatibility#

bdr.bdr_version_num 、30618 などで使用されるのと同じ数値形式で、下位互換性のあるバージョンを指定します。デフォルトは現在のPGDバージョンです。一般に不要な効果がある場合でも、以前のPGDバージョンの正確な動作を有効にします。 これはリリースごとに異なるため、値が現在のバージョンと異なる場合を除き、構成ファイルで明示的に使用しないことをお勧めします。

bdr.track_replication_estimates#

ピアノードの適用レートとキャッチアップ間隔の観点からレプリケーション推定を追跡します。 CAMOのようなプロトコルは、この情報を使用して、ピアノードの準備状況を推定できます。このパラメーターはデフォルトで有効になっています。

bdr.lag_tracker_apply_rate_weight#

PGDは、ローカルノードからWALを適用するという点でピアノードがどれだけ遅れているかを監視し、遅延追跡の適用レートの移動平均を計算します。このパラメーターは、この移動平均計算で新しい計算値がどの程度寄与するかを指定します。デフォルトは0.1です。

bdr.enable_auto_sync_reconcile#

有効にすると、ノードはダウンしたノードに対して最も前にあるノードからデータの自動同期を実行します。デフォルト5.5.1からはオフです。