pgautofailover

pgautofailover

pgautofailover : pg_auto_failover

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
5150
pgautofailover
pgautofailover
2.2
ADMIN
PostgreSQL
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--sLd--
No
Yes
Yes
Yes
no
no
Relationships
Requires
btree_gist
See Also
pglogical
pglogical_origin
pg_failover_slots
pgpool_recovery
repmgr
pg_checksums
pgpool_adm
bgw_replstatus

Packages

TypeRepoVersionPG Major CompatibilityPackage PatternDependencies
EXT
PGDG
2.2
18
17
16
15
14
pgautofailoverbtree_gist
RPM
PGDG
2.2
18
17
16
15
14
pg_auto_failover_$v-
DEB
PGDG
2.2
18
17
16
15
14
postgresql-$v-auto-failover-
Linux / PGPG18PG17PG16PG15PG14
el8.x86_64
MISS
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
el8.aarch64
MISS
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
el9.x86_64
MISS
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
el9.aarch64
MISS
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
el10.x86_64
MISS
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
el10.aarch64
MISS
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
d12.x86_64
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
d12.aarch64
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
d13.x86_64
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
d13.aarch64
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
u22.x86_64
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
u22.aarch64
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
u24.x86_64
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
u24.aarch64
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
PGDG 2.2
PackageVersionOSORGSIZEFile URL
postgresql-18-auto-failover2.2d12.x86_64pgdg377.7 KiBpostgresql-18-auto-failover_2.2-3.pgdg12+1_amd64.deb
postgresql-18-auto-failover2.2d12.aarch64pgdg373.6 KiBpostgresql-18-auto-failover_2.2-3.pgdg12+1_arm64.deb
postgresql-18-auto-failover2.2d13.x86_64pgdg379.1 KiBpostgresql-18-auto-failover_2.2-3.pgdg13+1_amd64.deb
postgresql-18-auto-failover2.2d13.aarch64pgdg374.8 KiBpostgresql-18-auto-failover_2.2-3.pgdg13+1_arm64.deb
postgresql-18-auto-failover2.2u22.x86_64pgdg378.3 KiBpostgresql-18-auto-failover_2.2-3.pgdg22.04+1_amd64.deb
postgresql-18-auto-failover2.2u22.aarch64pgdg374.1 KiBpostgresql-18-auto-failover_2.2-3.pgdg22.04+1_arm64.deb
postgresql-18-auto-failover2.2u24.x86_64pgdg369.2 KiBpostgresql-18-auto-failover_2.2-3.pgdg24.04+1_amd64.deb
postgresql-18-auto-failover2.2u24.aarch64pgdg364.7 KiBpostgresql-18-auto-failover_2.2-3.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_auto_failover_172.2el8.x86_64pgdg812.9 KiBpg_auto_failover_17-2.2-1PGDG.rhel8.x86_64.rpm
pg_auto_failover_172.2el8.aarch64pgdg809.9 KiBpg_auto_failover_17-2.2-1PGDG.rhel8.aarch64.rpm
pg_auto_failover_172.2el9.x86_64pgdg786.3 KiBpg_auto_failover_17-2.2-1PGDG.rhel9.x86_64.rpm
pg_auto_failover_172.2el9.aarch64pgdg789.2 KiBpg_auto_failover_17-2.2-1PGDG.rhel9.aarch64.rpm
pg_auto_failover_172.2el10.x86_64pgdg788.0 KiBpg_auto_failover_17-2.2-1PGDG.rhel10.x86_64.rpm
pg_auto_failover_172.2el10.aarch64pgdg785.7 KiBpg_auto_failover_17-2.2-1PGDG.rhel10.aarch64.rpm
postgresql-17-auto-failover2.2d12.x86_64pgdg374.2 KiBpostgresql-17-auto-failover_2.2-3.pgdg12+1_amd64.deb
postgresql-17-auto-failover2.2d12.aarch64pgdg370.7 KiBpostgresql-17-auto-failover_2.2-3.pgdg12+1_arm64.deb
postgresql-17-auto-failover2.2d13.x86_64pgdg375.0 KiBpostgresql-17-auto-failover_2.2-3.pgdg13+1_amd64.deb
postgresql-17-auto-failover2.2d13.aarch64pgdg372.4 KiBpostgresql-17-auto-failover_2.2-3.pgdg13+1_arm64.deb
postgresql-17-auto-failover2.2u22.x86_64pgdg393.9 KiBpostgresql-17-auto-failover_2.2-3.pgdg22.04+1_amd64.deb
postgresql-17-auto-failover2.2u22.aarch64pgdg388.7 KiBpostgresql-17-auto-failover_2.2-3.pgdg22.04+1_arm64.deb
postgresql-17-auto-failover2.2u24.x86_64pgdg364.9 KiBpostgresql-17-auto-failover_2.2-3.pgdg24.04+1_amd64.deb
postgresql-17-auto-failover2.2u24.aarch64pgdg362.5 KiBpostgresql-17-auto-failover_2.2-3.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_auto_failover_162.2el8.x86_64pgdg812.5 KiBpg_auto_failover_16-2.2-1PGDG.rhel8.x86_64.rpm
pg_auto_failover_162.1el8.x86_64pgdg844.0 KiBpg_auto_failover_16-2.1-1PGDG.rhel8.x86_64.rpm
pg_auto_failover_162.2el8.aarch64pgdg809.4 KiBpg_auto_failover_16-2.2-1PGDG.rhel8.aarch64.rpm
pg_auto_failover_162.1el8.aarch64pgdg843.8 KiBpg_auto_failover_16-2.1-1PGDG.rhel8.aarch64.rpm
pg_auto_failover_162.2el9.x86_64pgdg786.3 KiBpg_auto_failover_16-2.2-1PGDG.rhel9.x86_64.rpm
pg_auto_failover_162.1el9.x86_64pgdg807.5 KiBpg_auto_failover_16-2.1-1PGDG.rhel9.x86_64.rpm
pg_auto_failover_162.2el9.aarch64pgdg789.1 KiBpg_auto_failover_16-2.2-1PGDG.rhel9.aarch64.rpm
pg_auto_failover_162.1el9.aarch64pgdg817.4 KiBpg_auto_failover_16-2.1-1PGDG.rhel9.aarch64.rpm
pg_auto_failover_162.2el10.x86_64pgdg788.1 KiBpg_auto_failover_16-2.2-1PGDG.rhel10.x86_64.rpm
pg_auto_failover_162.2el10.aarch64pgdg785.7 KiBpg_auto_failover_16-2.2-1PGDG.rhel10.aarch64.rpm
postgresql-16-auto-failover2.2d12.x86_64pgdg368.8 KiBpostgresql-16-auto-failover_2.2-3.pgdg12+1_amd64.deb
postgresql-16-auto-failover2.2d12.aarch64pgdg365.9 KiBpostgresql-16-auto-failover_2.2-3.pgdg12+1_arm64.deb
postgresql-16-auto-failover2.2d13.x86_64pgdg369.8 KiBpostgresql-16-auto-failover_2.2-3.pgdg13+1_amd64.deb
postgresql-16-auto-failover2.2d13.aarch64pgdg366.4 KiBpostgresql-16-auto-failover_2.2-3.pgdg13+1_arm64.deb
postgresql-16-auto-failover2.2u22.x86_64pgdg387.5 KiBpostgresql-16-auto-failover_2.2-3.pgdg22.04+1_amd64.deb
postgresql-16-auto-failover2.2u22.aarch64pgdg383.4 KiBpostgresql-16-auto-failover_2.2-3.pgdg22.04+1_arm64.deb
postgresql-16-auto-failover2.2u24.x86_64pgdg358.7 KiBpostgresql-16-auto-failover_2.2-3.pgdg24.04+1_amd64.deb
postgresql-16-auto-failover2.2u24.aarch64pgdg356.6 KiBpostgresql-16-auto-failover_2.2-3.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_auto_failover_152.2el8.x86_64pgdg812.6 KiBpg_auto_failover_15-2.2-1PGDG.rhel8.x86_64.rpm
pg_auto_failover_152.1el8.x86_64pgdg843.6 KiBpg_auto_failover_15-2.1-1PGDG.rhel8.x86_64.rpm
pg_auto_failover_152.0el8.x86_64pgdg842.5 KiBpg_auto_failover_15-2.0-1.rhel8.x86_64.rpm
pg_auto_failover_152.2el8.aarch64pgdg809.3 KiBpg_auto_failover_15-2.2-1PGDG.rhel8.aarch64.rpm
pg_auto_failover_152.1el8.aarch64pgdg843.0 KiBpg_auto_failover_15-2.1-1PGDG.rhel8.aarch64.rpm
pg_auto_failover_152.0el8.aarch64pgdg841.6 KiBpg_auto_failover_15-2.0-1.rhel8.aarch64.rpm
pg_auto_failover_152.2el9.x86_64pgdg789.5 KiBpg_auto_failover_15-2.2-1PGDG.rhel9.x86_64.rpm
pg_auto_failover_152.1el9.x86_64pgdg811.6 KiBpg_auto_failover_15-2.1-1PGDG.rhel9.x86_64.rpm
pg_auto_failover_152.0el9.x86_64pgdg812.1 KiBpg_auto_failover_15-2.0-1.rhel9.x86_64.rpm
pg_auto_failover_152.2el9.aarch64pgdg792.9 KiBpg_auto_failover_15-2.2-1PGDG.rhel9.aarch64.rpm
pg_auto_failover_152.1el9.aarch64pgdg820.9 KiBpg_auto_failover_15-2.1-1PGDG.rhel9.aarch64.rpm
pg_auto_failover_152.0el9.aarch64pgdg821.5 KiBpg_auto_failover_15-2.0-1.rhel9.aarch64.rpm
pg_auto_failover_152.2el10.x86_64pgdg791.7 KiBpg_auto_failover_15-2.2-1PGDG.rhel10.x86_64.rpm
pg_auto_failover_152.2el10.aarch64pgdg788.8 KiBpg_auto_failover_15-2.2-1PGDG.rhel10.aarch64.rpm
postgresql-15-auto-failover2.2d12.x86_64pgdg368.4 KiBpostgresql-15-auto-failover_2.2-3.pgdg12+1_amd64.deb
postgresql-15-auto-failover2.2d12.aarch64pgdg365.9 KiBpostgresql-15-auto-failover_2.2-3.pgdg12+1_arm64.deb
postgresql-15-auto-failover2.2d13.x86_64pgdg370.1 KiBpostgresql-15-auto-failover_2.2-3.pgdg13+1_amd64.deb
postgresql-15-auto-failover2.2d13.aarch64pgdg366.1 KiBpostgresql-15-auto-failover_2.2-3.pgdg13+1_arm64.deb
postgresql-15-auto-failover2.2u22.x86_64pgdg391.1 KiBpostgresql-15-auto-failover_2.2-3.pgdg22.04+1_amd64.deb
postgresql-15-auto-failover2.2u22.aarch64pgdg388.1 KiBpostgresql-15-auto-failover_2.2-3.pgdg22.04+1_arm64.deb
postgresql-15-auto-failover2.2u24.x86_64pgdg360.6 KiBpostgresql-15-auto-failover_2.2-3.pgdg24.04+1_amd64.deb
postgresql-15-auto-failover2.2u24.aarch64pgdg357.6 KiBpostgresql-15-auto-failover_2.2-3.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_auto_failover_142.2el8.x86_64pgdg810.9 KiBpg_auto_failover_14-2.2-1PGDG.rhel8.x86_64.rpm
pg_auto_failover_142.1el8.x86_64pgdg841.9 KiBpg_auto_failover_14-2.1-1PGDG.rhel8.x86_64.rpm
pg_auto_failover_142.0el8.x86_64pgdg840.6 KiBpg_auto_failover_14-2.0-1.rhel8.x86_64.rpm
pg_auto_failover_141.6.4el8.x86_64pgdg994.9 KiBpg_auto_failover_14-1.6.4-1.rhel8.x86_64.rpm
pg_auto_failover_141.6.2el8.x86_64pgdg929.2 KiBpg_auto_failover_14-1.6.2-1.rhel8.x86_64.rpm
pg_auto_failover_142.2el8.aarch64pgdg808.0 KiBpg_auto_failover_14-2.2-1PGDG.rhel8.aarch64.rpm
pg_auto_failover_142.1el8.aarch64pgdg841.4 KiBpg_auto_failover_14-2.1-1PGDG.rhel8.aarch64.rpm
pg_auto_failover_142.0el8.aarch64pgdg840.1 KiBpg_auto_failover_14-2.0-1.rhel8.aarch64.rpm
pg_auto_failover_142.2el9.x86_64pgdg789.0 KiBpg_auto_failover_14-2.2-1PGDG.rhel9.x86_64.rpm
pg_auto_failover_142.1el9.x86_64pgdg811.2 KiBpg_auto_failover_14-2.1-1PGDG.rhel9.x86_64.rpm
pg_auto_failover_142.0el9.x86_64pgdg811.7 KiBpg_auto_failover_14-2.0-1.rhel9.x86_64.rpm
pg_auto_failover_141.6.4el9.x86_64pgdg966.2 KiBpg_auto_failover_14-1.6.4-1.rhel9.x86_64.rpm
pg_auto_failover_142.2el9.aarch64pgdg792.5 KiBpg_auto_failover_14-2.2-1PGDG.rhel9.aarch64.rpm
pg_auto_failover_142.1el9.aarch64pgdg820.6 KiBpg_auto_failover_14-2.1-1PGDG.rhel9.aarch64.rpm
pg_auto_failover_142.0el9.aarch64pgdg821.0 KiBpg_auto_failover_14-2.0-1.rhel9.aarch64.rpm
pg_auto_failover_142.2el10.x86_64pgdg792.2 KiBpg_auto_failover_14-2.2-1PGDG.rhel10.x86_64.rpm
pg_auto_failover_142.2el10.aarch64pgdg789.6 KiBpg_auto_failover_14-2.2-1PGDG.rhel10.aarch64.rpm
postgresql-14-auto-failover2.2d12.x86_64pgdg362.7 KiBpostgresql-14-auto-failover_2.2-3.pgdg12+1_amd64.deb
postgresql-14-auto-failover2.2d12.aarch64pgdg359.4 KiBpostgresql-14-auto-failover_2.2-3.pgdg12+1_arm64.deb
postgresql-14-auto-failover2.2d13.x86_64pgdg364.0 KiBpostgresql-14-auto-failover_2.2-3.pgdg13+1_amd64.deb
postgresql-14-auto-failover2.2d13.aarch64pgdg360.4 KiBpostgresql-14-auto-failover_2.2-3.pgdg13+1_arm64.deb
postgresql-14-auto-failover2.2u22.x86_64pgdg386.6 KiBpostgresql-14-auto-failover_2.2-3.pgdg22.04+1_amd64.deb
postgresql-14-auto-failover2.2u22.aarch64pgdg382.8 KiBpostgresql-14-auto-failover_2.2-3.pgdg22.04+1_arm64.deb
postgresql-14-auto-failover2.2u24.x86_64pgdg354.8 KiBpostgresql-14-auto-failover_2.2-3.pgdg24.04+1_amd64.deb
postgresql-14-auto-failover2.2u24.aarch64pgdg350.8 KiBpostgresql-14-auto-failover_2.2-3.pgdg24.04+1_arm64.deb

Source

Install

Make sure PGDG repo available:

pig repo add pgdg -u    # add pgdg repo and update cache

Install this extension with pig:

pig install pgautofailover;		# install via package name, for the active PG version

pig install pgautofailover -v 18;   # install for PG 18
pig install pgautofailover -v 17;   # install for PG 17
pig install pgautofailover -v 16;   # install for PG 16
pig install pgautofailover -v 15;   # install for PG 15
pig install pgautofailover -v 14;   # install for PG 14

Config this extension to shared_preload_libraries:

shared_preload_libraries = 'pgautofailover';

Create this extension with:

CREATE EXTENSION pgautofailover CASCADE; -- requires btree_gist

Usage

pgautofailover: pg_auto_failover

pg_auto_failover is an extension and service for automated PostgreSQL failover. It consists of a monitor node (running the pgautofailover extension), and keeper processes on each data node managed by the pg_autoctl CLI.

Architecture

  • Monitor: a PostgreSQL instance with the pgautofailover extension that implements a state machine for failover decisions
  • Keeper (pg_autoctl run): runs on each data node, reports health to the monitor and executes state transitions
  • Supports 2+ node setups with synchronous replication by default
  • Supports Citus HA (since v2.0)

Key CLI Commands

# Create the monitor
pg_autoctl create monitor --pgdata /path/to/monitor --pgport 5000

# Create a data node (primary or secondary auto-assigned)
pg_autoctl create postgres --pgdata /path/to/data --pgport 5001 --monitor postgres://monitor:5000/pg_auto_failover

# Run the keeper (foreground)
pg_autoctl run --pgdata /path/to/data

# Check cluster state
pg_autoctl show state --pgdata /path/to/monitor

# Perform a manual switchover
pg_autoctl perform switchover --pgdata /path/to/monitor

# Perform a manual failover
pg_autoctl perform failover --pgdata /path/to/monitor

Failover Behavior

The monitor tracks node health. When a secondary becomes unavailable or its lag is too high, it is removed from synchronous_standby_names on the primary. Failover/switchover operations are blocked until the secondary is healthy again, preventing data loss.

Documentation

Full documentation: pg-auto-failover.readthedocs.io

Last updated on