Postgresql 10 Logical Replication

saya menggunakan 2 server database (ubuntu 18.04), yaitu :

  • 192.168.123.247 sebagai publisher
  • 192.168.123.232 sebagai subscriber

Pada semua server, lakukan instalasi postgresql terlebih dahulu (versi 10), setelah itu edit /etc/postgresql/10/main/postgresql.conf

listen_addresses = '*'
port = 5432

dan edit juga /etc/postgresql/10/main/pg_hba.conf

host   all        all    0.0.0.0/0      md5

lalu restart postgresql

sudo systemctl restart postgresql

Publisher server

pada server publisher, edit wal_level menjadi logical

nano /etc/postgresql/10/main/postgresql.conf
...
wal_level = logical 
...

lalu restart postgresql

sudo systemctl restart postgresql

pada server publisher, buat database dan username

sudo su - postgres
psql

CREATE DATABASE testdb;
\c testdb
CREATE TABLE article(idart int primary key,name varchar(10), quantity int);

CREATE ROLE rep REPLICATION LOGIN PASSWORD 'Password';
GRANT ALL ON article TO rep;

setelah itu isi tabel artikel

INSERT INTO article (idart, name, quantity) VALUES (1, 'articolo1', 20);
INSERT INTO article (idart, name, quantity) VALUES (2, 'articolo2', 50);

lalu create publication

CREATE PUBLICATION mypub FOR TABLE article;
\dRp+

Subscriber server

buat database serta tabel yang sama dengan publisher

sudo su - postgres
psql

CREATE DATABASE testdb;
\c testdb
CREATE TABLE article(idart int primary key,name varchar(10), quantity int);

lalu subscribe kedalam publisher

CREATE SUBSCRIPTION mysub CONNECTION 'dbname=testdb host=192.168.123.247 user=rep password=Password port=5432' PUBLICATION mypub;

lalu cek tabel, otomatis akan terisi dari server publisher

table article;

Testing

untuk melakukan testing, tambahkan data atau hapus data pada server publisher

INSERT INTO article (idart, name, quantity) VALUES (3, 'articolo3', 70);
INSERT INTO article (idart, name, quantity) VALUES (4, 'articolo4', 70);

lalu cek tabel pada server subscriber.

Comments are closed.