Logical replication lets you copy data changes from one database to another in real time. It helps keep data in sync across different places.
Logical replication basics in PostgreSQL
Start learning this pattern below
Jump into concepts and practice - no test required
CREATE PUBLICATION publication_name FOR TABLE table_name; -- On subscriber server: CREATE SUBSCRIPTION subscription_name CONNECTION 'connection_string' PUBLICATION publication_name;
CREATE PUBLICATION defines what data changes to send.
CREATE SUBSCRIPTION connects to the publisher and receives changes.
my_pub that sends changes from the customers table.CREATE PUBLICATION my_pub FOR TABLE customers;
my_sub that connects to the publisher and receives changes from my_pub.CREATE SUBSCRIPTION my_sub CONNECTION 'host=server1 dbname=mydb user=replicator password=secret' PUBLICATION my_pub;
This example sets up logical replication for the products table. The publisher creates the table, inserts some data, and creates a publication. The subscriber creates the same table and subscribes to the publication to receive data changes.
-- On publisher server: CREATE TABLE products (id SERIAL PRIMARY KEY, name TEXT, price NUMERIC); INSERT INTO products (name, price) VALUES ('Pen', 1.20), ('Notebook', 2.50); CREATE PUBLICATION product_pub FOR TABLE products; -- On subscriber server: CREATE TABLE products (id SERIAL PRIMARY KEY, name TEXT, price NUMERIC); CREATE SUBSCRIPTION product_sub CONNECTION 'host=publisher_host dbname=pubdb user=replicator password=secret' PUBLICATION product_pub;
Both publisher and subscriber must have the same table structure for replication to work correctly.
Logical replication sends only data changes, not schema changes like adding columns.
Use a replication user with proper permissions for security.
Logical replication copies data changes between databases in real time.
Use CREATE PUBLICATION on the source and CREATE SUBSCRIPTION on the target.
It is useful for backups, migrations, and sharing data selectively.
Practice
Solution
Step 1: Understand logical replication concept
Logical replication copies only data changes from selected tables, not the entire database.Step 2: Compare options with concept
Encrypting data during transfer, creating a full backup of the database, and optimizing query performance are unrelated to logical replication.Final Answer:
To copy data changes from specific tables between databases -> Option AQuick Check:
Logical replication = Copy data changes [OK]
- Confusing logical replication with physical backup
- Thinking it copies entire database
- Assuming it improves query speed
Solution
Step 1: Identify command for publication creation
The command to create a publication isCREATE PUBLICATIONfollowed by publication name and tables.Step 2: Analyze options
OnlyCREATE PUBLICATION mypub FOR ALL TABLES;creates a publication.CREATE SUBSCRIPTION mysub CONNECTION 'conninfo' PUBLICATION mypub;creates a subscription,CREATE REPLICATION SLOT myslot LOGICAL;creates a replication slot, andCREATE DATABASE mydb WITH REPLICATION;creates a database.Final Answer:
CREATE PUBLICATION mypub FOR ALL TABLES; -> Option CQuick Check:
Publication creation = CREATE PUBLICATION [OK]
- Mixing publication and subscription commands
- Using replication slot command for publication
- Confusing database creation with replication setup
CREATE PUBLICATION mypub FOR TABLE customers;And on the subscriber:
CREATE SUBSCRIPTION mysub CONNECTION 'host=source dbname=mydb user=replicator password=secret' PUBLICATION mypub;What will happen when a new row is inserted into the
customers table on the publisher?Solution
Step 1: Understand publication and subscription setup
The publication includes the customers table, and the subscription connects to it, enabling replication of changes.Step 2: Analyze effect of insert on replication
Inserts on the published table are sent to the subscriber, so the new row will appear there.Final Answer:
The new row will be replicated to the subscriber's customers table -> Option AQuick Check:
Insert on published table = replicated row [OK]
- Thinking subscription is missing when it is created
- Assuming full table copy on each insert
- Believing inserts are not replicated
Solution
Step 1: Check publication includes tables
If the publication does not include the desired tables, no changes will be sent to the subscriber.Step 2: Evaluate other options
The subscriber database is offline is unlikely because subscription requires the subscriber to be online. Logical replication does not support inserts is false; inserts are supported. You forgot to create a replication slot on the subscriber is incorrect because replication slots are created on the publisher, not subscriber.Final Answer:
The publication does not include the tables you want to replicate -> Option DQuick Check:
Missing tables in publication = no replication [OK]
- Confusing replication slot location
- Assuming inserts are unsupported
- Ignoring publication table list
orders table but exclude the order_logs table, which is large and not needed on the subscriber. How should you set up the publication?Solution
Step 1: Understand selective table replication
To replicate only the orders table, the publication must include only that table.Step 2: Analyze options for correct table inclusion
CREATE PUBLICATION mypub FOR ALL TABLES; replicates all tables, including order_logs which is unwanted. CREATE PUBLICATION mypub FOR TABLE orders, order_logs; includes both tables. CREATE PUBLICATION mypub FOR TABLE order_logs; includes only order_logs, which is unwanted.Final Answer:
CREATE PUBLICATION mypub FOR TABLE orders; -> Option BQuick Check:
Include only needed tables in publication [OK]
- Using FOR ALL TABLES when exclusion is needed
- Including unwanted tables in publication
- Confusing publication and subscription roles
