pg_failover_slots

PG Failover Slots extension

Overview

PackageVersionCategoryLicenseLanguage
pg_failover_slots1.2.1ETLPostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
9540pg_failover_slotsNoYesYesNoNoYes-
Relatedpglogical pglogical_origin pglogical_ticker pgactive repmgr bgw_replstatus pgl_ddl_deploy decoderbufs

Load via shared_preload_libraries on both primary and standby nodes.

Version

TypeRepoVersionPG VerPackageDeps
EXTPIGSTY1.2.11817161514pg_failover_slots-
RPMPIGSTY1.2.11817161514pg_failover_slots_$v-
DEBPIGSTY1.2.11817161514postgresql-$v-pg-failover-slots-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
u22.x86_64
u22.aarch64
u24.x86_64
u24.aarch64

Build

You can build the RPM / DEB packages for pg_failover_slots using pig build:

pig build pkg pg_failover_slots         # build RPM / DEB packages

Install

You can install pg_failover_slots directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install pg_failover_slots;          # Install for current active PG version
pig ext install -y pg_failover_slots -v 18  # PG 18
pig ext install -y pg_failover_slots -v 17  # PG 17
pig ext install -y pg_failover_slots -v 16  # PG 16
pig ext install -y pg_failover_slots -v 15  # PG 15
pig ext install -y pg_failover_slots -v 14  # PG 14
dnf install -y pg_failover_slots_18       # PG 18
dnf install -y pg_failover_slots_17       # PG 17
dnf install -y pg_failover_slots_16       # PG 16
dnf install -y pg_failover_slots_15       # PG 15
dnf install -y pg_failover_slots_14       # PG 14
apt install -y postgresql-18-pg-failover-slots   # PG 18
apt install -y postgresql-17-pg-failover-slots   # PG 17
apt install -y postgresql-16-pg-failover-slots   # PG 16
apt install -y postgresql-15-pg-failover-slots   # PG 15
apt install -y postgresql-14-pg-failover-slots   # PG 14

Preload:

shared_preload_libraries = 'pg_failover_slots';

Usage

Sources: README, releases

pg_failover_slots keeps logical replication slots usable across failover by synchronizing slot definitions and positions from a primary to a standby.

Enable it on both nodes

shared_preload_libraries = 'pg_failover_slots'

Required standby settings from the README:

hot_standby_feedback = on
primary_slot_name = 'my_physical_slot'

Main configuration

pg_failover_slots.synchronize_slot_names = 'name_like:%'
pg_failover_slots.drop_extra_slots = true
pg_failover_slots.primary_dsn = 'host=primary dbname=mydb'
pg_failover_slots.standby_slot_names = 'standby_physical_slot'
pg_failover_slots.standby_slots_min_confirmed = -1
pg_failover_slots.worker_nap_time = 60000
pg_failover_slots.maintenance_db = 'postgres'

The README documents synchronize_slot_names filters by exact slot name, LIKE pattern, or plugin name.

Check standby readiness before failover

SELECT slot_name, active
FROM pg_replication_slots
WHERE slot_type = 'logical';

On the standby, logical slots are ready only when they exist and show active = false. The README says active = true means a slot is still being initialized.

Notes

  • PostgreSQL 11+ is required upstream.
  • v1.2.1 is a bug-fix release; no new user-facing SQL or GUC surface was added there.
  • v1.2.0 added PostgreSQL 18 support and clarified drop_extra_slots behavior.

Last Modified 2026-04-19: update extension stub docs (9f178c3)