What happens during the initial installation ?
When you install and initialize PostgreSQL, several processes occur to set up the database system for use. (This is my flow of understanding)
1. Installation Phase
Binary Installation: PostgreSQL binaries (e.g.,
postgres,psql) and utilities are installed. This is handled by package managers likeapt,yum, or directly from source.Configuration Files: Default configuration files like
postgresql.conf,pg_hba.conf, andpg_ident.confare set up.
2. Initialization (initdb)
initdb)The initdb command prepares the environment for the PostgreSQL database cluster. Key processes include:
a. Directory Creation:
The data directory specified (e.g.,
/var/lib/postgresql/data) is created if it doesn’t already exist.Subdirectories like
base,global,pg_wal,pg_stat, etc., are created to organize data files and system metadata.
b. Configuration File Generation:
postgresql.conf: Main configuration file.pg_hba.conf: Controls client authentication.pg_ident.conf: Maps operating system usernames to database usernames.
c. Creation of System Catalog:
Core system catalogs (e.g.,
pg_class,pg_attribute,pg_database) are created to manage database objects.Essential metadata is initialized.
d. Default Templates Setup:
template0:This is a pristine template used to create other databases.
Contains only standard objects provided by PostgreSQL.
Frozen to prevent modifications.
template1:This template is used by default for database creation.
It can be modified to include custom extensions, schemas, or objects you want in all new databases.
If
template1is damaged,template0can restore it.
e. Default Databases:
postgres: A default administrative database created for use by DBAs.template0andtemplate1: As described above.postgresis often the initial user-created database for experimentation or administration.
f. Encoding and Locale:
Specifies the default character set and locale for the cluster.
All databases inherit these settings unless overridden.
g. WAL Initialization:
The Write-Ahead Logging (WAL) mechanism is set up under
pg_wal.Ensures data durability and crash recovery.
h. Superuser Role:
The default superuser role (e.g.,
postgres) is created. It owns all the system objects.
3. Role Management
Roles are PostgreSQL’s way of handling users and groups.
During initialization:
The
postgressuperuser role is created.Privileges for managing other roles and databases are assigned to this role.
4. Background Processes (When PostgreSQL Starts)
Once initialized, PostgreSQL runs several background processes for database management:
a. postmaster Process:
postmaster Process:This is the main server process that manages all other subprocesses.
b. Background Worker Processes:
WAL Writer: Handles WAL updates.
Checkpoint Process: Writes dirty pages to disk to maintain data integrity.
Autovacuum: Automatically manages vacuum and analyze tasks.
Stats Collector: Collects and updates statistics for query optimization.
Archiver: Archives completed WAL segments when configured.
Last updated