pglogical

pglogical

pglogical : PostgreSQL Logical Replication

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
9500
pglogical
pglogical
2.4.6
ETL
PostgreSQL
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--sLd--
No
Yes
Yes
Yes
no
no
Relationships
Schemaspglogical
Need By
pgl_ddl_deploy
pglogical_ticker
See Also
decoderbufs
wal2json
dblink
postgres_fdw
pg_failover_slots
pgactive
repmgr
kafka_fdw
Siblings
pglogical_origin

Packages

TypeRepoVersionPG Major CompatibilityPackage PatternDependencies
EXT
PGDG
2.4.6
18
17
16
15
14
pglogical-
RPM
PGDG
2.4.6
18
17
16
15
14
pglogical_$v-
DEB
PGDG
2.4.6
18
17
16
15
14
postgresql-$v-pglogical-
Linux / PGPG18PG17PG16PG15PG14
el8.x86_64
PGDG 2.4.6
PGDG 2.4.5
PGDG 2.4.4
PGDG 2.4.3
PGDG 2.4.3
el8.aarch64
PGDG 2.4.6
PGDG 2.4.5
PGDG 2.4.4
PGDG 2.4.3
PGDG 2.4.3
el9.x86_64
PGDG 2.4.6
PGDG 2.4.5
PGDG 2.4.4
PGDG 2.4.3
PGDG 2.4.3
el9.aarch64
PGDG 2.4.6
PGDG 2.4.5
PGDG 2.4.4
PGDG 2.4.3
PGDG 2.4.3
el10.x86_64
PGDG 2.4.6
PGDG 2.4.5
PGDG 2.4.5
PGDG 2.4.5
PGDG 2.4.5
el10.aarch64
PGDG 2.4.6
PGDG 2.4.5
PGDG 2.4.5
PGDG 2.4.5
PGDG 2.4.5
d12.x86_64
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
d12.aarch64
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
d13.x86_64
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
d13.aarch64
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
u22.x86_64
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
u22.aarch64
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
u24.x86_64
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
u24.aarch64
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PGDG 2.4.6
PackageVersionOSORGSIZEFile URL
pglogical_152.4.3el8.x86_64pgdg153.2 KiBpglogical_15-2.4.3-1.rhel8.x86_64.rpm
pglogical_152.4.2el8.x86_64pgdg152.5 KiBpglogical_15-2.4.2-1.rhel8.x86_64.rpm
pglogical_152.4.3el8.aarch64pgdg146.4 KiBpglogical_15-2.4.3-1.rhel8.aarch64.rpm
pglogical_152.4.2el8.aarch64pgdg145.6 KiBpglogical_15-2.4.2-1.rhel8.aarch64.rpm
pglogical_152.4.3el9.x86_64pgdg150.6 KiBpglogical_15-2.4.3-1.rhel9.x86_64.rpm
pglogical_152.4.2el9.x86_64pgdg150.1 KiBpglogical_15-2.4.2-1.rhel9.x86_64.rpm
pglogical_152.4.3el9.aarch64pgdg146.0 KiBpglogical_15-2.4.3-1.rhel9.aarch64.rpm
pglogical_152.4.2el9.aarch64pgdg146.1 KiBpglogical_15-2.4.2-1.rhel9.aarch64.rpm
pglogical_152.4.5el10.x86_64pgdg151.9 KiBpglogical_15-2.4.5-3PGDG.rhel10.x86_64.rpm
pglogical_152.4.5el10.aarch64pgdg149.2 KiBpglogical_15-2.4.5-3PGDG.rhel10.aarch64.rpm
postgresql-15-pglogical2.4.6d12.x86_64pgdg346.9 KiBpostgresql-15-pglogical_2.4.6-2.pgdg12+1_amd64.deb
postgresql-15-pglogical2.4.6d12.aarch64pgdg335.7 KiBpostgresql-15-pglogical_2.4.6-2.pgdg12+1_arm64.deb
postgresql-15-pglogical2.4.6d13.x86_64pgdg348.1 KiBpostgresql-15-pglogical_2.4.6-2.pgdg13+1_amd64.deb
postgresql-15-pglogical2.4.6d13.aarch64pgdg336.9 KiBpostgresql-15-pglogical_2.4.6-2.pgdg13+1_arm64.deb
postgresql-15-pglogical2.4.6u22.x86_64pgdg436.4 KiBpostgresql-15-pglogical_2.4.6-2.pgdg22.04+1_amd64.deb
postgresql-15-pglogical2.4.6u22.aarch64pgdg424.8 KiBpostgresql-15-pglogical_2.4.6-2.pgdg22.04+1_arm64.deb
postgresql-15-pglogical2.4.6u24.x86_64pgdg347.0 KiBpostgresql-15-pglogical_2.4.6-2.pgdg24.04+1_amd64.deb
postgresql-15-pglogical2.4.6u24.aarch64pgdg336.9 KiBpostgresql-15-pglogical_2.4.6-2.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
pglogical_142.4.3el8.x86_64pgdg151.7 KiBpglogical_14-2.4.3-1.rhel8.x86_64.rpm
pglogical_142.4.2el8.x86_64pgdg150.9 KiBpglogical_14-2.4.2-1.rhel8.x86_64.rpm
pglogical_142.4.1el8.x86_64pgdg150.4 KiBpglogical_14-2.4.1-1.rhel8.x86_64.rpm
pglogical_142.4.0el8.x86_64pgdg149.9 KiBpglogical_14-2.4.0-1.rhel8.x86_64.rpm
pglogical_142.4.3el8.aarch64pgdg145.3 KiBpglogical_14-2.4.3-1.rhel8.aarch64.rpm
pglogical_142.4.2el8.aarch64pgdg144.6 KiBpglogical_14-2.4.2-1.rhel8.aarch64.rpm
pglogical_142.4.3el9.x86_64pgdg150.1 KiBpglogical_14-2.4.3-1.rhel9.x86_64.rpm
pglogical_142.4.2el9.x86_64pgdg150.1 KiBpglogical_14-2.4.2-1.rhel9.x86_64.rpm
pglogical_142.4.1el9.x86_64pgdg149.7 KiBpglogical_14-2.4.1-1.rhel9.x86_64.rpm
pglogical_142.4.3el9.aarch64pgdg145.6 KiBpglogical_14-2.4.3-1.rhel9.aarch64.rpm
pglogical_142.4.2el9.aarch64pgdg145.6 KiBpglogical_14-2.4.2-1.rhel9.aarch64.rpm
pglogical_142.4.5el10.x86_64pgdg151.3 KiBpglogical_14-2.4.5-3PGDG.rhel10.x86_64.rpm
pglogical_142.4.5el10.aarch64pgdg148.7 KiBpglogical_14-2.4.5-3PGDG.rhel10.aarch64.rpm
postgresql-14-pglogical2.4.6d12.x86_64pgdg347.2 KiBpostgresql-14-pglogical_2.4.6-2.pgdg12+1_amd64.deb
postgresql-14-pglogical2.4.6d12.aarch64pgdg335.5 KiBpostgresql-14-pglogical_2.4.6-2.pgdg12+1_arm64.deb
postgresql-14-pglogical2.4.6d13.x86_64pgdg347.2 KiBpostgresql-14-pglogical_2.4.6-2.pgdg13+1_amd64.deb
postgresql-14-pglogical2.4.6d13.aarch64pgdg336.8 KiBpostgresql-14-pglogical_2.4.6-2.pgdg13+1_arm64.deb
postgresql-14-pglogical2.4.6u22.x86_64pgdg434.5 KiBpostgresql-14-pglogical_2.4.6-2.pgdg22.04+1_amd64.deb
postgresql-14-pglogical2.4.6u22.aarch64pgdg423.2 KiBpostgresql-14-pglogical_2.4.6-2.pgdg22.04+1_arm64.deb
postgresql-14-pglogical2.4.6u24.x86_64pgdg347.2 KiBpostgresql-14-pglogical_2.4.6-2.pgdg24.04+1_amd64.deb
postgresql-14-pglogical2.4.6u24.aarch64pgdg336.0 KiBpostgresql-14-pglogical_2.4.6-2.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 pglogical;		# install via package name, for the active PG version

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

Config this extension to shared_preload_libraries:

shared_preload_libraries = 'pglogical';

Create this extension with:

CREATE EXTENSION pglogical;

Usage

pglogical: PostgreSQL Logical Replication

A logical replication system for PostgreSQL using a publish/subscribe model. Requires no triggers or external programs.

Enabling

Add to postgresql.conf:

wal_level = 'logical'
max_worker_processes = 10
max_replication_slots = 10
max_wal_senders = 10
shared_preload_libraries = 'pglogical'
CREATE EXTENSION pglogical;

Provider (Publisher) Setup

-- Create a node on the provider
SELECT pglogical.create_node(
    node_name := 'provider1',
    dsn := 'host=providerhost port=5432 dbname=mydb'
);

-- Add all tables in public schema to default replication set
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

-- Add all sequences in public schema
SELECT pglogical.replication_set_add_all_sequences('default', ARRAY['public']);

Subscriber Setup

-- Create a node on the subscriber
SELECT pglogical.create_node(
    node_name := 'subscriber1',
    dsn := 'host=subscriberhost port=5432 dbname=mydb'
);

-- Create a subscription to the provider
SELECT pglogical.create_subscription(
    subscription_name := 'subscription1',
    provider_dsn := 'host=providerhost port=5432 dbname=mydb'
);

Replication Set Management

-- Create a custom replication set
SELECT pglogical.create_replication_set('my_set');

-- Add a specific table
SELECT pglogical.replication_set_add_table('my_set', 'my_table', true);

-- Remove a table
SELECT pglogical.replication_set_remove_table('my_set', 'my_table');

Row and Column Filtering

-- Row filtering: only replicate rows matching a condition
SELECT pglogical.replication_set_add_table(
    set_name := 'default',
    relation := 'my_table',
    row_filter := 'id > 1000'
);

-- Column filtering: only replicate specific columns
SELECT pglogical.replication_set_add_table(
    set_name := 'default',
    relation := 'my_table',
    columns := '{id, name, updated_at}'
);

Subscription Management

-- Check subscription status
SELECT * FROM pglogical.show_subscription_status();

-- Drop subscription
SELECT pglogical.drop_subscription('subscription1');

Key Features

  • Selective replication (per-table, row filtering, column filtering)
  • Replication between different PostgreSQL major versions
  • Delayed replication
  • No need for superuser on subscriber
Last updated on