Skip to main content

What is a Postmaster PID file in PostgreSQL?

 

  • As per the PostgreSQL architecture, the postmaster is the first background process that will starts when the cluster is started.
  • It is a parent process of all other background processes.
  • In case any of the other background processes got failed, The postmaster automatically restart the dead processes.
  • It also works as a listener. When the client’s request to the server first it will land into the postmaster and perform syntax and semantic checking, Once it is pass and spawn a new connection this process called “Pgprocess”.
  • The postmaster act as a listener well as the parent process, so it is also called “Supervision”.
ps -ef|grep postmasterpostgres 393 32729 0 22:28 pts/3 00:00:00 grep postmaster

Purpose of Postmaster PID file:

  • The postmaster PID file resides on the data directory when the cluster is up and running.
  • The purpose of this PID file uses to capture

1. the current postmaster process ID (PID),

2. cluster data directory path, postmaster start timestamp,

3. port number,

4. Unix domain socket directory path,

5. listen_address (IP address)

6. shared memory segment id.

  • The captured PID file details are being locked when the cluster was up and running. It protects to access the same port number or data directory for another cluster launch or running.
$cd $PGDATA$lsbase     pg_commit_ts  pg_ident.conf  pg_notify    pg_snapshots  pg_subtrans  PG_VERSION  postgresql.auto.conf  postmaster.pid
global pg_dynshmem pg_logical pg_replslot pg_stat pg_tblspc pg_wal postgresql.conf
logfile pg_hba.conf pg_multixact pg_serial pg_stat_tmp pg_twophase pg_xact postmaster.opts

To view the postmaster PID file:

$ cat postmaster.pid4693/u01/pgdatabase/data16156884855432/tmp*5432001 3604491ready

· Now I have just stopped my cluster services using pg_ctl

pg_ctl stop -mfwaiting for the server to shut down.... doneserver stopped

After the cluster is stopped of we verify that the postmaster PID file it was automatically disappeared from the data directory.

summary:

· The postmaster PID file will be generated automatically when the cluster services are up and running.

· It is a lock file that maintains the current cluster details i.e not allow to use of these details to run another cluster on the same port or data directory

Comments

Popular posts from this blog

PostgreSQL Vacuum and Vacuum full are not two different processes

  PostgreSQL’s   VACUUM   and   VACUUM FULL   are not separate processes but rather different operational modes of the same maintenance command. Here’s why: Core Implementation Both commands share the same underlying codebase and are executed through the  vacuum_rel()  function in PostgreSQL’s source code ( src/backend/commands/vacuum.c ). The key distinction lies in the  FULL  option, which triggers additional steps: Standard  VACUUM : Removes dead tuples (obsolete rows) and marks space reusable  within PostgreSQL Updates the visibility map to optimize future queries Runs concurrently with read/write operations VACUUM FULL : Rewrites the entire table into a new disk file, compressing it and reclaiming space for the  operating system Rebuilds all indexes and requires an  ACCESS EXCLUSIVE  lock, blocking other operations Key Differences in Behavior Aspect Standard VACUUM VACUUM FULL Space Reclamation Internal reuse onl...

Job scheduler for PostgreSQL "pg_cron"

What is pg_cron   : -   pg_cron is a simple cron-based job scheduler for   PostgreSQL (9.5 or higher)   that runs inside the database as an extension. It uses the same syntax as regular cron, but it allows you to schedule PostgreSQL commands directly from the database . Why We need it ? Running periodic maintenance jobs or removing old data is a common requirement in PostgreSQL. A simple way to achieve this is to configure cron or another external daemon to periodically connect to the database and run a command. Let's see how it's works  Step 1 :-  For implementing/Installation of pg_cron you need to download source code from git Dowload link  export PATH=/usr/local/pgsql/bin:$PATH wget https://github.com/citusdata/pg_cron/archive/master.zip unzip master cd pg_cron-master/ make make install    Step 2 : - To start the pg_cron background worker when PostgreSQL starts, you need to add pg_cron to  shared_preload_libraries   in post...

All about pg_hba.conf(authentication methods- Postgresql)

  pg_hba.conf is the PostgreSQL access policy configuration file, which is located in the /var/lib/pgsql/10/data/ directory (PostgreSQL10) by default. The configuration file has 5 parameters, namely: TYPE (host type), DATABASE (database name), USER (user name), ADDRESS (IP address and mask), METHOD (encryption method) host all all 192.168.109.103/22 md5 host dbName user 192.168.109.106/22 trust Modify the server-side pg_hba.conf file Make the shell can connect to the postgres database secretly: Modify the authentication file $PGDATA/pg_hba.conf, add the following lines, and reload to make the configuration take effect immediately. host pankajconnect postgresql 192.168.8.103/32 trust Reload to take effect: pg_ctl reload -D $PGDATA Examples: 1. Allow local login to the database using PGAdmin3, database address  localhost, user user1, database user1db: host user1db user1 127.0.0.1/32 md5 2. Allow 10.1.1.0~10.1.1.255 network segments to log in to the database: host all all 10.1.1....