PGSQL File Hierarchy Structure
Postgres FHS
The following parameters are related to the PostgreSQL database dir:
- pg_dbsu_home: Postgres default user’s home dir, default is
/var/lib/pgsql
. - pg_bin_dir: Postgres binary dir, defaults to
/usr/pgsql/bin/
. - pg_data: Postgres database dir, default is
/pg/data
. - pg_fs_main: Postgres main data disk mount point, default is
/export
. - pg_fs_bkup: Postgres backup disk mount point, default is
/var/backups
(optional, you can also choose to backup to a subdirectory on the primary data disk).
#------------------------------------------------------------------------------
# Create Directory
#------------------------------------------------------------------------------
# this assumes that
# /pg is shortcut for postgres home
# {{ pg_fs_main }} contains the main data (MUST ALREADY MOUNTED)
# {{ pg_fs_bkup }} contains archive and backup data (MUST ALREADY MOUNTED)
# cluster-version is the default parent folder for pgdata (e.g pg-test-12)
#------------------------------------------------------------------------------
# default variable:
# pg_fs_main = /export fast ssd
# pg_fs_bkup = /var/backups cheap hdd
#
# /pg -> /export/postgres/pg-test-12
# /pg/data -> /export/postgres/pg-test-12/data
#------------------------------------------------------------------------------
- name: Create postgresql directories
tags: pg_dir
become: yes
block:
- name: Make sure main and backup dir exists
file: path={{ item }} state=directory owner=root mode=0777
with_items:
- "{{ pg_fs_main }}"
- "{{ pg_fs_bkup }}"
# pg_cluster_dir: "{{ pg_fs_main }}/postgres/{{ pg_cluster }}-{{ pg_version }}"
- name: Create postgres directory structure
file: path={{ item }} state=directory owner={{ pg_dbsu }} group=postgres mode=0700
with_items:
- "{{ pg_fs_main }}/postgres"
- "{{ pg_cluster_dir }}"
- "{{ pg_cluster_dir }}/bin"
- "{{ pg_cluster_dir }}/log"
- "{{ pg_cluster_dir }}/tmp"
- "{{ pg_cluster_dir }}/conf"
- "{{ pg_cluster_dir }}/data"
- "{{ pg_cluster_dir }}/meta"
- "{{ pg_cluster_dir }}/stat"
- "{{ pg_cluster_dir }}/change"
- "{{ pg_backup_dir }}/postgres"
- "{{ pg_backup_dir }}/arcwal"
- "{{ pg_backup_dir }}/backup"
- "{{ pg_backup_dir }}/remote"
PG Binary FHS
On RedHat/CentOS, the default installation location for the Postgres distribution is:
/usr/pgsql-${pg_version}/
The installation playbook automatically creates a soft link to the currently installed version. For example, if version 14 of Postgres is installed, there are.
/usr/pgsql -> /usr/pgsql-14
Therefore, the default pg_bin_dir
is /usr/pgsql/bin/
, and this path is added to the PATH
environment variable for all users in /etc/profile.d/pgsql.sh
.
PG Data FHS
Pigsty assumes at least one primary data disk (pg_fs_main
) and an optional backup data disk (pg_fs_bkup
) on the single node used to deploy the database instance. Usually, the primary data disk is a high-performance SSD, while the backup disk is a high-capacity inexpensive HDD.
#------------------------------------------------------------------------------
# Create Directory
#------------------------------------------------------------------------------
# this assumes that
# /pg is shortcut for postgres home
# {{ pg_fs_main }} contains the main data (MUST ALREADY MOUNTED)
# {{ pg_fs_bkup }} contains archive and backup data (MAYBE ALREADY MOUNTED)
# {{ pg_cluster }}-{{ pg_version }} is the default parent folder
# for pgdata (e.g pg-test-14)
#------------------------------------------------------------------------------
# default variable:
# pg_fs_main = /export fast ssd
# pg_fs_bkup = /var/backups cheap hdd
#
# /pg -> /export/postgres/pg-test-14
# /pg/data -> /export/postgres/pg-test-14/data
PG Cluster FHS
# basic
{{ pg_fs_main }} /data # contains all business data (pg,consul,etc..)
{{ pg_dir_main }} /data/postgres # contains postgres main data
{{ pg_cluster_dir }} /data/postgres/pg-test-14 # contains cluster `pg-test` data (of version 13)
/data/postgres/pg-test-14/bin # binary scripts
/data/postgres/pg-test-14/log # misc logs
/data/postgres/pg-test-14/tmp # tmp, sql files, records
/data/postgres/pg-test-14/conf # configurations
/data/postgres/pg-test-14/data # main data directory
/data/postgres/pg-test-14/meta # identity information
/data/postgres/pg-test-14/stat # stats information
/data/postgres/pg-test-14/change # changing records
{{ pg_fs_bkup }} /var/backups # contains all backup data (pg,consul,etc..)
{{ pg_dir_bkup }} /var/backups/postgres # contains postgres backup data
{{ pg_backup_dir }} /var/backups/postgres/pg-test-14 # contains cluster `pg-test` backup (of version 13)
/var/backups/postgres/pg-test-14/backup # base backup
/var/backups/postgres/pg-test-14/arcwal # WAL archive
/var/backups/postgres/pg-test-14/remote # mount NFS/S3 remote resources here
# links
/pg -> /data/postgres/pg-test-14 # pg root link
/pg/data -> /data/postgres/pg-test-14/data # real data dir
/pg/backup -> /var/backups/postgres/pg-test-14/backup # base backup
/pg/arcwal -> /var/backups/postgres/pg-test-14/arcwal # WAL archive
/pg/remote -> /var/backups/postgres/pg-test-14/remote # mount NFS/S3 remote resources here
Pgbouncer FHS
Pgbouncer is run using the Postgres user, and the config file is located in /etc/pgbouncer
. The config file includes.
pgbouncer.ini
: the main config fileuserlist.txt
: lists the users in the connection poolpgb_hba.conf
: lists the access privileges of the connection pool usersdatabase.txt
: lists the databases in the connection pool
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.