postgresql.conf

TPAは、さまざまな.conf ファイルを含むconf.d ディレクトリを作成し、メインのpostgresql.conf でinclude_dir を使用してこれらの追加の構成ファイルを使用します。

Postgres構成ファイル(postgresql.conf、pg_ident.conf、およびpg_hba.conf)とconf.d の下に含まれるファイルは、常にpostgres_conf_dir に保存されます。これはデフォルトではpostgres_data_dir と同じですが、構成をデータディレクトリから分離したい場合は別の場所に設定できます。

主な構成メカニズムは、変数を直接設定することです。

cluster_vars:
  temp_buffers: 16MB
  log_connections: on
  autovacuum_vacuum_cost_limit: -1
  effective_cache_size: 4GB
  max_connections: 300
  max_wal_senders: 32

TPAは構成を複数のファイルに分割します。 2つのメインファイルは0000-tpa.conf と0001-tpa_restart.conf です。これらには、それぞれ変更するためにサーバーのリロードまたは再起動が必要な設定が含まれています。展開中に、TPAは変更を正しいファイルに書き込み、必要に応じてPostgresをリロードまたは再起動します。

TPAは、特定の状況(オプションの拡張機能を構成するなど)で他のファイルを使用する場合がありますが、通常、特定のパラメーターが正確にどこに設定されているかを気にする必要はありません。

次にtpaexec deploy を実行したときに変更が上書きされる可能性があるため、conf.d の下のファイルは編集しないでください。

postgres_conf_settings

TPAは、 temp_buffers や maintenance_work_mem などの変数を提供します。これらは、使用可能な多くのpostgresql.conf設定に直接設定できます。

postgres_conf_settings を使用して、TPAで認識されるかどうかに関係なく、パラメーターを設定できます。 postgresql.conf に表示されるとおりに値を引用する必要があります。

cluster_vars:
  effective_cache_size: 2GB
  postgres_conf_settings:
    effective_cache_size: 4GB
    authentication_timeout: 1min
    synchronous_standby_names: >-
      any 2 ("first", "second", "third")
    bdr.global_lock_statement_timeout: 60s

これは、TPAがネイティブに認識しない設定で最も役立ちますが、任意のパラメーターに使用できます(たとえば、 effective_cache_size は変数として設定できますが、 authentication_timeout はできません)。

これらの設定はconf.d/9900-role-settings.conf に書き込まれるため、他の方法で設定された変数よりも優先されます。

postgres_conf_settings の下の値を変更した場合、TPAはリロードで変更を有効にできるかどうか、または再起動が必要かどうかを知る方法がありません。したがって、変更を有効にするために常にサーバーを再起動します。これが、可能な限り変数を直接使用することが常に好ましい理由です。

shared_buffers

デフォルトでは、TPAはshared_buffers を使用可能なメモリの25%に設定します(これは経験則であり、推奨事項ではありません)。このデフォルトをオーバーライドするには、 shared_buffers_ratio: 0.35 を設定して別の比率を使用するか、 shared_buffers_mb: 796 を特定のMB数に設定するか、正確な値を直接指定します。

effective_cache_size

デフォルトでは、TPAはeffective_cache_size を使用可能なメモリーの50%に設定します。このデフォルトをオーバーライドするには、 effective_cache_size_ratio: 0.35 を設定して別の比率を使用するか、 effective_cache_size_mb: 796 を特定のMB数に設定するか、正確な値を直接指定します。

shared_preload_libraries

TPAは、 shared_preload_libraries のエントリが機能するために必要な拡張機能の内部リストを維持しており、そのような拡張機能をpostgres_extensions に含めると、自動的にshared_preload_libraries を更新します。

プリロードが必要な認識されない拡張機能を使用している場合は、それらをpreload_extensions に追加できます。

cluster_vars:
  preload_extensions:
  - myext
  - otherext

myext をpostgres_extensions に追加すると、shared_preload_libraries にmyext が含まれます。

デフォルトでは、conf.d/8888-shared_preload_libraries.conf にshared_preload_libraries が設定されています。

shared_preload_libraries を変数として直接設定することはサポートされていません。通常は設定する必要はありませんが、やむを得ない場合は

以下に全引用符で囲んだ値を設定できます。この場合、値はconf.d/9900-tpa_postgres_conf_settings.conf に設定されます。

手動で変更する

TPAで生成された構成をオーバーライドするには2つの方法があります。

最初の(そして推奨される)オプションは、 ALTER SYSTEM を使用することです。

#  ALTER SYSTEM SET bdr.global_lock_statement_timeout TO 60s;

conf.d/9999-override.conf を編集することもできます。

$ echo "bdr.global_lock_statement_timeout=60s" >> conf.d/9999-override.conf

conf.d の下の他のすべてのファイルは、構成が変更された場合、展開中に上書きされる可能性がありますが、TPAは最初に空のファイルを作成した後に9999-override.conf を変更しません。

変更する設定によっては、変更を有効にするには SELECT pg_reload_conf() を実行するか、サーバーを再起動する必要があります。

postgresql.confをゼロから生成する

デフォルトでは、TPAはinclude_dir を追加する以外は、デフォルト(つまりinitdb で生成された)のpostgresql.confファイルをそのままにします。通常、この動作をオーバーライドする必要はありませんが、 postgres_conf_template を設定できます。

cluster_vars:
  postgres_conf_template: pgconf.j2

これで、クラスターディレクトリのtemplates/pgconf.j2 を使用してpostgresql.confが生成されます。