Question: Can PostgreSQL replication be set up between different versions?


PostgreSQL replication allows for the copying of data from one database server (the primary) to one or more other servers (the replicas). This is crucial for high availability, load balancing, and data redundancy. A common question regarding this process involves the compatibility between different versions of PostgreSQL during replication.

Logical Replication

With the introduction of logical replication in PostgreSQL 10, it became possible to replicate data across different major versions of PostgreSQL. Logical replication works at a higher level than physical replication by replicating changes at the logical rather than the byte level. It allows you to replicate specific tables and even transform data during replication.

To set up logical replication, you need to:

  1. Ensure both primary and replica(s) are running PostgreSQL 10 or later.
  2. Configure the primary database to publish changes:
    -- On the primary server CREATE PUBLICATION my_publication FOR TABLE my_table;
  3. Configure the replica database to subscribe to the publication:
    -- On the replica server CREATE SUBSCRIPTION my_subscription CONNECTION 'dbname=mydb host=primaryhost user=myuser password=mypass' PUBLICATION my_publication;

Physical Replication

Physical replication involves copying the exact binary representation of the database's data files from the primary server to the replica servers. Traditionally, physical replication requires the primary and replica PostgreSQL servers to be of the exact same major version because even minor differences in the binary format could render the replica's data inconsistent or corrupt.

For physical replication setup, consider using tools like pg_basebackup to clone the primary server for replica initialization.

Best Practices and Considerations

  • Version Compatibility: For logical replication, ensure that features used on the primary are compatible with the version running on the replica. Newer features may not be replicated correctly to an older version.
  • Replication Type Choice: Use logical replication when dealing with different PostgreSQL versions, given its flexibility and support for such scenarios. Physical replication should be reserved for same-version setups.
  • Upgrade Paths: Logical replication can facilitate zero-downtime upgrades by allowing a newer version of PostgreSQL to operate as a replica. After replication catches up, switch over the applications to the new version.

In conclusion, PostgreSQL supports replication between different versions through logical replication, offering a pathway for databases to maintain continuity across version upgrades. However, careful planning and testing are necessary to ensure data integrity and application compatibility.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book
Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.