148 lines
4.9 KiB
Django/Jinja
148 lines
4.9 KiB
Django/Jinja
# {{ ansible_managed }}
|
|
# PostgreSQL unified configuration file
|
|
|
|
# include the parameters that require restart if changed
|
|
include '{{ pg_configuration_file_restart_required }}'
|
|
|
|
{% if pg_version is version('15', '<') %}
|
|
stats_temp_directory = '/var/run/postgresql/{{ pg_version }}-{{ pg_cluster_name }}.pg_stat_tmp'
|
|
{% endif %}
|
|
{% if pg_timezone is defined %}
|
|
timezone = '{{ pg_timezone }}'
|
|
{% endif %}
|
|
statement_timeout = '{{ pg_statement_timeout }}'
|
|
|
|
# fixed parameters, those settings should never be changed
|
|
checkpoint_completion_target = '0.9'
|
|
datestyle = 'iso, dmy'
|
|
default_text_search_config = 'pg_catalog.english'
|
|
dynamic_shared_memory_type = 'posix'
|
|
lc_messages = '{{ pg_default_encoding | default("en_US.UTF-8") }}'
|
|
lc_monetary = '{{ pg_default_encoding | default("en_US.UTF-8") }}'
|
|
lc_numeric = '{{ pg_default_encoding | default("en_US.UTF-8") }}'
|
|
lc_time = '{{ pg_default_encoding | default("en_US.UTF-8") }}'
|
|
|
|
# memory settings
|
|
{% if pg_checkpoint_timeout is defined %}
|
|
checkpoint_timeout = '{{ pg_checkpoint_timeout }}'
|
|
{% endif %}
|
|
{% if pg_effective_cache_size is defined %}
|
|
effective_cache_size = '{{ pg_effective_cache_size }}'
|
|
{% endif %}
|
|
{% if pg_maintenance_work_mem is defined %}
|
|
maintenance_work_mem = '{{ pg_maintenance_work_mem }}'
|
|
{% endif %}
|
|
{% if pg_work_mem is defined %}
|
|
work_mem = '{{ pg_work_mem }}'
|
|
{% endif %}
|
|
|
|
# wal
|
|
{% if pg_max_wal_size is defined %}
|
|
max_wal_size = '{{ pg_max_wal_size }}'
|
|
{% endif %}
|
|
{% if pg_min_wal_size is defined %}
|
|
min_wal_size = '{{ pg_min_wal_size }}'
|
|
{% endif %}
|
|
|
|
# autovacuum
|
|
{% if pg_autovacuum_vacuum_scale_factor is defined %}
|
|
autovacuum_vacuum_scale_factor = '{{ pg_autovacuum_vacuum_scale_factor }}'
|
|
{% endif %}
|
|
{% if pg_autovacuum_work_mem is defined %}
|
|
autovacuum_work_mem = '{{ pg_autovacuum_work_mem }}'
|
|
{% endif %}
|
|
{% if pg_autovacuum_vacuum_cost_delay is defined %}
|
|
autovacuum_vacuum_cost_delay = '{{ pg_autovacuum_vacuum_cost_delay }}'
|
|
{% endif %}
|
|
{% if pg_autovacuum_vacuum_cost_limit is defined %}
|
|
autovacuum_vacuum_cost_limit = '{{ pg_autovacuum_vacuum_cost_limit }}'
|
|
{% endif %}
|
|
|
|
# ssd scale
|
|
{% if pg_ssd %}
|
|
seq_page_cost = 1.0
|
|
random_page_cost = {{ pg_random_page_cost }}
|
|
effective_io_concurrency = '{{ pg_effective_io_concurrency }}'
|
|
{% if pg_version is version('13', '>=') %}
|
|
maintenance_io_concurrency = '{{ pg_maintenance_io_concurrency }}'
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
# logging
|
|
{% if pg_logging %}
|
|
log_autovacuum_min_duration = '0'
|
|
log_checkpoints = 'on'
|
|
log_connections = 'on'
|
|
log_destination = 'csvlog'
|
|
log_directory = '{{ pg_log_directory }}'
|
|
log_disconnections = 'on'
|
|
log_file_mode = '0644'
|
|
log_filename = '{{ pg_version }}-{{ pg_cluster_name }}-{{ pg_log_filename_suffix }}.log'
|
|
log_line_prefix = '%t,%u,%d,%p,%h,%x,%l,%i,%s,%e,%q,%v,%a'
|
|
log_lock_waits = 'on'
|
|
log_min_duration_statement = '{{ pg_log_min_duration_statement }}'
|
|
log_rotation_age = '1h'
|
|
log_rotation_size = '0'
|
|
log_temp_files = '0'
|
|
{% if pg_timezone is defined %}
|
|
log_timezone = '{{ pg_timezone }}'
|
|
{% endif %}
|
|
log_truncate_on_rotation = 'on'
|
|
{% endif %}
|
|
|
|
# replication
|
|
{% if pg_archive_command is defined %}
|
|
archive_command = '{{ pg_archive_command }}'
|
|
archive_timeout = '{{ pg_archive_timeout }}'
|
|
{% endif %}
|
|
{% if pg_replication %}
|
|
hot_standby_feedback = 'on'
|
|
hot_standby = 'on'
|
|
max_standby_archive_delay = '{{ pg_max_standby_archive_delay }}'
|
|
max_standby_streaming_delay = '{{ pg_max_standby_streaming_delay }}'
|
|
{% endif %}
|
|
|
|
# specific to pg version >= 9.6
|
|
{% if pg_version is version('9.6', '>=') %}
|
|
{% if pg_idle_in_transaction_session_timeout is defined %}
|
|
idle_in_transaction_session_timeout = '{{ pg_idle_in_transaction_session_timeout }}'
|
|
{% endif %}
|
|
{% if pg_max_parallel_workers_per_gather is defined %}
|
|
max_parallel_workers_per_gather = {{ pg_max_parallel_workers_per_gather }}
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
# performance
|
|
synchronous_commit = '{{ pg_synchronous_commit }}'
|
|
{% if not pg_fsync %}
|
|
# WARNING: fsync is essential to prevent database corruption
|
|
# never set fsync = off except for initial loading of a new database cluster from a backup file
|
|
# don't forget to re-enable fsync as soon as you care about the data
|
|
fsync = off
|
|
{% endif %}
|
|
{% if file_system.stdout == "zfs" %}
|
|
|
|
# zfs
|
|
full_page_writes = off
|
|
wal_compression = off
|
|
{% if pg_version is version('12', '>=') %}
|
|
wal_recycle = off
|
|
wal_init_zero = off
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if (pg_version is version('12', '>=') and pg_replication_role == "replica") or pg_restore_command is defined %}
|
|
|
|
# replica
|
|
{% if postgres_primary_slot_name is defined %}
|
|
primary_conninfo = 'host={{ postgres_primary_conninfo_host }} port={{ postgres_primary_conninfo_port }} user={{ postgres_primary_conninfo_user }} password={{ postgres_primary_conninfo_password }} sslmode={{ postgres_primary_conninfo_sslmode }}'
|
|
primary_slot_name = '{{ postgres_primary_slot_name }}'
|
|
{% endif %}
|
|
{% if pg_restore_command is defined %}
|
|
restore_command = '{{ pg_restore_command }}'
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if (pg_version is version('17', '>=')) %}
|
|
|
|
# compatibility
|
|
allow_alter_system = off
|
|
{% endif %}
|