Postgres configuration

いくつかのPostgres構成パラメーターは、PGDノードに影響します。これらのパラメーターは、ノードごとに異なる方法で設定できますが、通常はお勧めしません。

PGD独自の設定については、 PGD settings reference を参照してください。

Postgresの設定

正しく実行するには、PGDに次のPostgres設定が必要です。

  • wal_level — PGDは論理デコードに依存しているため、 logical に設定する必要があります。

  • shared_preload_libraries — bdr を含める必要がありますが、必要に応じて、その前後に他のエントリを含めることができます。ただし、 pglogical を含めないでください。

  • track_commit_timestamp —競合する各行のタイムスタンプを取得する競合解決のためにon に設定する必要があります。

PGDでは、これらのPostgreSQL設定を適切な値に設定する必要があります。値は、クラスターのサイズとスケールによって異なります。

  • logical_decoding_work_mem —論理デコードで使用されるメモリバッファーサイズ。このサイズより大きいトランザクションはバッファーをオーバーフローし、ローカルディスクに一時的に保存されます。デフォルトは64MBですが、はるかに大きく設定できます。

  • max_worker_processes — PGDはレプリケーションとメンテナンスのタスクにバックグラウンドワーカーを使用するため、正しく動作するには十分なワーカースロットが必要です。各データベースの正しい最小ワーカー数の式は、これらの値を合計することです。 - PostgreSQLインスタンスごとに1つ - そのインスタンスのデータベースごとに1つ - PGD対応データベースごとに4つ - PGDグループ内のピアノードごとに1つ - PGDグループ内のピアノードごとに有効になっている各ライター ノードがPGDグループから削除されるときに、一時的により多くのワーカープロセスが必要になる場合があります。

  • max_wal_senders —すべてのピアノードに2つ必要。

  • max_replication_slots —すべてのピアノードに2つ必要。

  • wal_sender_timeout およびwal_receiver_timeout —ノードがCAMOパートナーを切断または再接続と見なす速さを決定します。詳細は CAMO failure scenarios を参照してください。

N個のピアノードを持つグループの通常の実行では、PGDにはN個のスロットとWAL送信者が必要です。同期中、PGDは一時的に別のN-1スロットとWAL送信者を使用するため、この時折のピーク需要に合わせてパラメーターを十分に高く設定するように注意してください。

パラレル適用をオンにした状態で、スロット数を式* writersからNスロットに増やす必要があります。これは、 max_replication_slots もレプリケーション起点の最大数を設定し、パラレル適用の機能の一部がライタごとに追加の起点を使用するためです。

デコードワーカー が有効になっている場合、このプロセスにはPGDグループごとに1つの追加のレプリケーションスロットが必要です。

max_worker_processes 、max_wal_senders 、およびmax_replication_slots パラメーターを変更するには、ローカルノードを再起動する必要があります。

レガシー同期レプリケーションモードは、次のパラメーターを使用してサポートされます。詳細と制限事項については、

Durability and performance options を参照してください。

  • synchronous_commit and synchronous_standby_names — PGDレプリケーションの耐久性とパフォーマンスに影響します。 physical replication と同様の方法で 。

時間ベースのスナップショット

snapshot_timestamp

タイムスタンプベースのスナップショット の使用をオンにし、使用するタイムスタンプを設定します。

最大準備トランザクション

max_prepared_transactions

明示的な2フェーズコミット、 CAMO、またはEagerトランザクションによるクラスター全体の同時準備トランザクションの最大数に対処するには、十分に高く設定する必要があります。制限を超えると、ノードでローカル2フェーズコミットまたはCAMOトランザクションを実行できなくなり、クラスター上のすべてのEagerトランザクションができなくなります。このパラメーターは、 Postgresサーバーの起動時にのみ設定できます。