pgactive 拡張機能のパラメータ設定 - Amazon Relational Database Service

pgactive 拡張機能のパラメータ設定

次のクエリを使用すると、pgactive 拡張に関連するすべてのパラメータを表示できます。

app=> SELECT * FROM pg_settings WHERE name LIKE 'pgactive.%';

pgactive 拡張機能は、さまざまなパラメータを使用して設定できます。これらのパラメータは、AWS Management Console または CLI AWS インターフェイスから設定できます。

主な pgactive 拡張機能パラメータ

次の表は、pgactive 拡張機能の主なパラメータのリファレンスです。

パラメータ

単位

デフォルト

説明

pgactive.conflict_logging_include_tuples

boolean

pgactive 拡張機能の完全なタプル情報をログに記録します。

注記

変更を有効にするには、サーバーの再起動が必要です。

pgactive.log_conflicts_to_table

boolean

pgactive 拡張機能が検出された競合を pgactive.pgactive_conflict_history テーブルにログ記録するかどうかを決定します。詳細については、「競合のログ記録」を参照してください。

注記

変更を有効にするには、サーバーの再起動が必要です。

pgactive.log_conflicts_to_logfile

boolean

pgactive 拡張機能が検出された競合を PostgreSQL ログファイルに記録するかどうかを決定します。詳細については、「競合のログ記録」を参照してください。

注記

変更を有効にするには、サーバーの再起動が必要です。

pgactive.synchronous_commit

boolean

オフ

pgactive 適用ワーカーのコミット動作を決定します。無効 (オフ) にすると、適用ワーカーは非同期コミットを実行します。これにより、適用オペレーション中の PostgreSQL のスループットが向上しますが、アップストリームへのリプレイ確認が遅延します。off に設定しても常に安全であり、トランザクションの損失やスキップは発生しません。この設定は、ダウンストリームノードでのディスクフラッシュのタイミングと、確認がアップストリームに送信されるタイミングにのみ影響します。システムは、チェックポイントや定期的な作業などの関連しないオペレーションを通じてコミットがディスクにフラッシュされるまで、リプレイフラッシュ確認の送信を遅らせます。ただし、アップストリームノードの synchronous_standby_names にダウンストリームがリストされている場合、off に設定すると、アップストリームノードでの同期コミットがクライアントに成功を報告するまでの時間が長くなります。この場合、パラメータは on に設定してください。

注記

このパラメータが on に設定されていても、synchronous_standby_names にノードがリストされている場合は、アクティブ/アクティブ設定ではレプリケーションの競合が発生する可能性があります。これは、システムにはノード間ロックとグローバルスナップショット管理がないため、異なるノード上の同時トランザクションが同じタプルを変更できるためです。さらに、トランザクションはアップストリームノードでコミットした後にのみレプリケーションを開始します。同期コミットを有効にしても、pgactive 拡張機能が常時一貫性のあるシステムになるわけではありません。

pgactive.temp_dump_directory

string

初期設定時のデータベースクローン作成オペレーションに必要な一時ストレージパスを定義します。このディレクトリは postgres ユーザーによって書き込み可能で、完全なデータベースダンプを格納するのに十分なストレージ容量を持っている必要があります。システムは、論理コピーオペレーションによるデータベースの初期セットアップ中にのみ、この場所を使用します。このパラメータは、pgactive_init_copy command では使用されません。

pgactive.max_ddl_lock_delay

milliseconds

-1

同時書き込みトランザクションを強制的に中止するまでの DDL ロックの最大待機時間を指定します。デフォルト値は -1 で、max_standby_streaming_delay で設定された値が使用されます。このパラメータには時間単位を指定できます。例えば、10 秒の場合は 10s と設定できます。この待機期間中、システムは進行中の書き込みトランザクションがコミットまたはロールバックされるのを待つ間に DDL ロックの取得を試みます。詳細については、「DDL ロック」を参照してください。

pgactive.ddl_lock_timeout

milliseconds

-1

DDL ロック試行がロックの取得を待機する時間を指定します。デフォルト値は -1 で、lock_timeout で指定された値を使用します。このパラメータは、10 秒の場合は 10s などの時間単位で設定できます。このタイマーは、DDL ロックを取得するための待機期間のみを制御します。システムがロックを取得し、DDL オペレーションを開始すると、タイマーは停止します。このパラメータは、DDL ロックを保持できる合計期間や全体的な DDL オペレーション時間を制限するものではありません。オペレーションの合計期間を制御するには、代わりに statement_timeout を使用します。詳細については、「DDL ロック」を参照してください。

pgactive.debug_trace_ddl_locks_level

boolean

pgactive 拡張機能の DDL ロックオペレーションのデフォルトのデバッグログレベルを上書きします。この設定を行うと、DDL ロック関連のメッセージがデフォルトレベルではなく LOG デバッグレベルで出力されます。このパラメータを使用して、サーバー全体で詳細な DEBUG1 または DEBUG2 ログレベルを有効にせずに、DDL ロックアクティビティをモニタリングできます。

詳細度の高い順序で使用可能なログレベル。

  • none – DDL ロックメッセージは DEBUG1 以下のサーバーログレベルにのみ表示されます。

  • statement - DDL ロックの取得試行の LOG 出力を追加します。

  • acquire_release - ロック取得、リリース、拒否イベント、およびピアノードによるリモート DDL ロックの適用を記録します。

  • peers - ピアノード間の DDL ロックネゴシエーションに関する追加の詳細を提供します。

  • debug - すべての DDL ロック関連のアクティビティを LOG レベルでログに記録します。

モニタリングオプションの詳細については、「グローバル DDL ロックのモニタリング」を参照してください。

注記

この設定の変更は、設定を再読み込みすると有効になります。サーバーを再起動する必要はありません。

追加の pgactive 拡張機能パラメータ

次の表は、pgactive 拡張機能で利用可能な、あまり使用されない内部設定オプションを示しています。

パラメータ

単位

デフォルト

説明

pgactive.debug_apply_delay

integer

pgactive.pgactive_connections エントリに明示的に適用遅延が指定されていない設定済み接続の適用遅延 (ミリ秒単位) を設定します。この遅延はノード作成時または参加時に設定され、pgactive はコミットされてから指定されたミリ秒数が経過するまで、ピアノードでトランザクションをリプレイしません。

主に、テスト環境で高レイテンシーのネットワークをシミュレートして、競合を簡単に作成するために使用します。例えば、ノード A とノード B に 500 ミリ秒の遅延が設定されている場合、ノード A に値を挿入した後、ノード B で競合する挿入を実行するために少なくとも 500 ミリ秒の猶予があります。

注記

適用ワーカーを有効にするには、サーバーの再ロードまたは再起動が必要です。

pgactive.connectability_check_duration

integer

データベースワーカーが接続の確立に失敗した場合に、接続を確立しようとする時間 (秒単位) を指定します。ワーカーは、成功するかこのタイムアウト値に達するまで、1 秒ごとに接続を試行します。この設定は、ワーカーが接続を確立する準備ができる前にデータベースエンジンが起動する場合に便利です。

pgactive.skip_ddl_replication

boolean

on

pgactive が有効になっている Amazon RDS で DDL の変更をレプリケートまたは処理する方法を制御します。on に設定すると、ノードは非 pgcctive ノードと同様に DDL 変更を処理します。このパラメータを使用する場合、以下の要件が適用されます。

  • 新しいノードは、skip_ddl_replication 値がアップストリームノードと異なる場合、pgactive グループに参加できません。

  • 既存のノードは、パラメータ値がアップストリームノードと一致しない場合、pgactive ワーカーを起動できません。

  • すべての pgactive メンバーは同じパラメータ値を使用する必要があります。

このパラメータは、スーパーユーザー権限を使用してグローバル、ローカル (セッションレベル) の 2 つの方法で変更できます。

注記

このパラメータを誤って変更すると、レプリケーションのセットアップが中断される可能性があります。

pgactive.do_not_replicate

boolean

このパラメータは内部使用のみを目的としています。トランザクションでこのパラメータを設定すると、変更は DB クラスター内の他のノードにレプリケートされません。

注記

このパラメータを誤って変更すると、レプリケーションのセットアップが中断される可能性があります。

pgactive.discard_mismatched_row_attributes

boolean

このパラメータは専門家による使用のみを目的としています。このパラメータは、特定のレプリケーションの問題をトラブルシューティングする場合にのみ使用することをお勧めします。このパラメータは、次の場合に使用します。

  • 受信レプリケーションストリームに、ローカルテーブルよりも多くの列を持つ行が含まれている場合。

  • これらのリモート行に NULL 以外の値が含まれている場合。

この設定により、以下のエラーメッセージがオーバーライドされ、データの不一致が発生してもレプリケーションは続行されます。「cannot right-pad mismatched attributes; attno %u is missing in local table and remote row has non-null, non-dropped value for this attribute

注記

このパラメータを誤って変更すると、レプリケーションのセットアップが中断される可能性があります。

pgactive.debug_trace_replay

boolean

on に設定すると、ダウンストリームの適用ワーカーが処理するリモートアクションごとにログメッセージが出力されます。ログには以下が含まれます。

  • 変更の種類

  • 影響を受けるテーブル名

  • トランザクション開始以降の変更の数

  • トランザクションコミット LSN

  • コミットタイムスタンプ

  • アップストリームノード識別子

  • 転送ノード識別子 (該当する場合)

ログには、キューに登録された DDL コマンドとテーブルの DROP も記録されます。

para>

デフォルトでは、ログには行フィールドの内容は含まれません。ログに行の値を含めるには、次のフラグを有効にして再コンパイルする必要があります。

  • VERBOSE_INSERT

  • VERBOSE_UPDATE

  • VERBOSE_DELETE

注記

このログ記録設定を有効にすると、パフォーマンスに影響する可能性があります。トラブルシューティングに必要な場合にのみ有効にすることをお勧めします。この設定の変更は、設定を再読み込みすると有効になります。サーバーを再起動する必要はありません。

pgactive.extra_apply_connection_options

pgactive ノードとのすべてのピアノード接続の接続パラメータを設定できます。これらのパラメータは、keepalives や SSL モードなどの設定を制御します。デフォルトでは、pgactive は次の接続パラメータを使用します。

  • connect_timeout=30

  • keepalives=1

  • keepalives_idle=20

  • keepalives_interval=20

  • keepalives_count=5

デフォルトのパラメータを上書きするには、以下の同様のコマンドを使用します。

pgactive.extra_apply_connection_options = 'keepalives=0'

個々のノード接続文字列は、これらの設定と pgactive の組み込み接続オプションの両方よりも優先されます。接続文字列形式の詳細については、「libpq connection strings」を参照してください。

デフォルトの keepalives 設定は有効のままにすることをお勧めします。信頼性の低いネットワーク経由で大規模なトランザクションが完了する際に問題が発生する場合にのみ、keepalives を無効にしてください。

注記

デフォルトのkeepalives 設定は有効のままにすることをお勧めします。信頼性の低いネットワーク経由で大規模なトランザクションが完了する際に問題が発生する場合にのみ、keepalives を無効にしてください。この設定の変更は、設定を再読み込みすると有効になります。サーバーを再起動する必要はありません。

pgactive.init_node_parallel_jobs (int)

pgactive.pgactive_join_group 関数を使用して、論理ノードの結合時に pg_dumppg_restore が使用できる並列ジョブの数を指定します。

この設定の変更は、設定を再読み込みすると有効になります。サーバーを再起動する必要はありません。

pgactive.max_nodes

int

4

pgactive 拡張グループで許可されるノードの最大数を指定します。デフォルト値は 4 ノードです。このパラメータの値を設定するときは、次の点を考慮する必要があります。

  • pgactive 拡張グループ内のすべてのノードは、同じパラメータ値を使用する必要があります。

  • パラメータ値がアップストリームノードと異なる場合、新しいノードは結合できません。

  • パラメータ値がアップストリームノードと異なる場合、既存のノードは pgactive 拡張ワーカーを開始できません。

  • 大規模なグループでは、追加のモニタリングとメンテナンス作業が必要になるため、このパラメータの値は慎重に設定してください。

このパラメータは、設定ファイルで設定する方法と、ALTER SYSTEM SET コマンドを使用する方法の 2 つの方法で設定できます。

このパラメータのデフォルト値は 4 です。つまり、pgactive 拡張グループには、いつでも最大 4 ノードまでしか参加できません。

注記

この変更は、サーバーを再起動した後に有効になります。

pgactive.permit_node_identifier_getter_function_creation

boolean

このパラメータは、内部使用のみを目的としています。有効にすると、pgactive 拡張機能により、pgactive ノード識別子 getter 関数の作成が可能になります。