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はリロードで変更を有効にできるかどうか、または再起動が必要かどうかを知る方法がありません。したがって、変更を有効にするために常にサーバーを再起動します。これが、可能な限り変数を直接使用することが常に好ましい理由です。
effective_cache_size¶
デフォルトでは、TPAはeffective_cache_size
を使用可能なメモリの50%に設定します。このデフォルトをオーバーライドするには、
effective_cache_size_ratio: 0.35 を設定して別の比率を使用するか、
effective_cache_size_mb: 796
を特定のMB数に設定するか、正確な値を直接指定します(例:
effective_cache_size: "8GB" )。
手で変更する¶
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が生成されます。