Melanjutkan catatan PostgreSQL 8.4 Upgrade ke 9.5 (SPSE Master-Slave Streaming Replication #1), pada langkah ini kita mulai mengaktifkan fitur hot_standy dan streaming replication pada Postgresql 9.5.

Persiapan awal adalah menyiapkan 2 server yang sudah terinstall Postgresql 9.5, sudah dikonfigurasi dan berjalan dengan baik seperti petunjuk SPSE Master-Slave Streaming Replication #1.

I. Konfigurasi Master Server

Master-server adalah server utama yang diakses oleh pengguna, database dari server ini akan direplikasi dan dikirimkan secara realtime ke Slave-server

1. nano /var/lib/pgsql/9.5/data/postgresql.conf
cari dan sesuaikan menjadi baris berikut :
listen_addresses = ‘localhost,192.168.100.194’
##sesuaikan 192.168.100.194 dengan ip master-server anda
wal_level = hot_standby
max_wal_senders = 1
wal_keep_segments = 50
2. nano /var/lib/pgsql/9.5/data/pg_hba.conf
tambahkan pada akhir file baris berikut :
host replication postgres 192.168.100.195/32 trust
##sesuaikan 192.168.100.195 dengan ip slave-server anda
3. service postgresql-9.5 restart
4. persiapan data awal yang akan direplikasi dan dicopy ke slave-server :
su – postgres
psql -c “SELECT pg_start_backup(‘replbackup’);”
tar cfP /tmp/db_file_backup.tar /var/lib/pgsql/9.5/data
psql -c “SELECT pg_stop_backup();”
exit
5. scp /tmp/db_file_backup.tar root@192.168.100.195:/tmp/

Sampai pada langkah ini, persiapan replikasi di master-server sudah selesai.

II. Konfigurasi Slave Server

Slave-server adalah server cadangan dan tidak diakses langsung oleh pengguna, database dari Master-server direplikasi secara realtime ke Slave-server ini.

1. service postgresql-9.5 stop
2. mv /var/lib/pgsql/9.5/data/ /var/lib/pgsql/9.5/data.old
3. tar xvfP /tmp/db_file_backup.tar
4. rm -f /var/lib/pgsql/9.5/data/postmaster.pid
5. nano /var/lib/pgsql/9.5/data/postgresql.conf
cari dan sesuaikan menjadi baris berikut :
hot_standby = on
6. cp /usr/pgsql-9.5/share/recovery.conf.sample /var/lib/pgsql/9.5/data/recovery.conf
7. nano /var/lib/pgsql/9.5/data/recovery.conf
cari dan sesuaikan menjadi baris berikut :
standby_mode = on
primary_conninfo = ‘host=192.168.100.194 port=5432’
#sesuaikan ip 192.168.100.194 dengan ip master-server anda
8. chown postgres.postgres /var/lib/pgsql/9.5/data/recovery.conf
9. service postgresql-9.5 start

Sampai sini selesai sudah catatan Master-Slave Streaming Replication #2, periksa log untuk memastikan proses replication berjalan sukses :

tail -f /var/lib/pgsql/9.5/data/pg_log/postgresql-[hari].log
—database system is ready to accept read only connections—

pengujian replikasi sudah berjalan dengan baik (update 21/04/206) :
1. di master-server :
su – postgres
psql
CREATE TABLE rep_test (test varchar(40));
INSERT INTO rep_test VALUES (‘data satu’);
INSERT INTO rep_test VALUES (‘data dua’);
INSERT INTO rep_test VALUES (‘lalala’);
INSERT INTO rep_test VALUES (‘hello there’);
INSERT INTO rep_test VALUES (‘blahblah’);
\q
exit

2. di slave-server :
su – postgres
psql
SELECT * FROM rep_test;
#akan tampil data seperti yang diisikan ke database master-server

Database slave-server sudah siap, lanjutkan dengan melakukan instalasi SPSE di slave-server dengan mengacu pada tuts Instalasi SPSE 3.6 SP2 dan SPSE 4.0 sehingga jika diperlukan slave-server siap diaktifkan mengganti tugas master-server.

Untuk full-duplikasi SPSE, juga diperlukan folder /home/file/file_production dilakukan rsync berkala (misalnya setiap 10 menit) sehingga konsistensi antara master-server dan slave-server terjaga.

Selamat Mencoba D.W.Y.O.R…

(referensi : https://opensourcedbms.com/dbms/setup-replication-with-postgres-9-2-on-centos-6redhat-el6fedora/, https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-on-postgresql-on-an-ubuntu-12-04-vps)