psql --username=postgresadmin postgresdbCREATE DATABASE chiragLogicalRep;# on both host\c chiraglogicalrep# switch to chiraglogicalrepCREATE TABLE products (id SERIAL,name TEXT,price DECIMAL);# on both hostCREATE ROLE chirag WITH REPLICATION LOGIN PASSWORD 'admin@123';# on publisher hostGRANT ALL PRIVILEGES ON DATABASE chiraglogicalrep TO chirag;# on publisher hostGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO chirag;# on publisher hostCREATE PUBLICATION my_publication;# on publisher hostALTER PUBLICATION my_publication ADD TABLE products;# on publisher hostCREATE SUBSCRIPTION my_subscription CONNECTION 'host=192.168.0.123 port=5000 password=admin@123 user=chirag dbname=chiraglogicalrep' PUBLICATION my_publication;# on subscriber hostINSERT INTO products (name, price) VALUES ('Pen', 5.90), ('Notebook', 9.10), ('Pencil', 8.50);# on publisher hostSELECT * FROM products;# verify on bath hostALTER TABLE products REPLICA IDENTITY FULL;# enable replica identity so we can perform update operations as well
DROP SUBSCRIPTION my_subscription;ALTER SUBSCRIPTION my_subscription REFRESH PUBLICATION;Logical Replication
UPDATE products SET price = 10.00 WHERE name = 'Pencil';
\d products# TO CHECK TABLE STRUCTUREDELETE FROM products WHERE name = 'Notebook';# TO ELEMENTSUPDATE products SET price = 10.00 WHERE name = 'Pencil';# TO UPDATE ELEMENTSELECT * FROM pg_publication_tables WHERE pubname = 'my_publication';# TO CHECK REPLICATION STATUS FOR TABLE
Scenarios
- postgrsql-1 RESTARTED and postgresql-2 UP => Replication Worked
- postgrsql-1 UP and postgresql-2 RESTARTED => Replication Worked
- Without Primary Key => Replication Worked
- Perform CURD operations
- INSERT CHECKED
- DELETE CHECKED
- UPDATE CHECKED # need enable replica identity