For version 10.0, the PostgreSQL community created two new commands: CREATE PUBLICATION and CREATE SUBSCRIPTION. These can be used for logical replication, which means that you can now selectively replicate data and achieve close-to-zero downtime upgrades. So far, binary replication and transaction log replication has been fully covered. However, sometimes, we might not want to replicate an entire database instance—replicating a table or two might be enough. This is exactly when logical replication is the right thing to use.
Before getting started, the first thing to do is change wal_level to logical in postgresql.conf and restart:
wal_level = logical
Then, we can create a simple table:
test=# CREATE TABLE t_test (a int, b int); CREATE TABLE
The same table layout has to exist in the second database as...