berikut adalah langkah-langkah untuk setup postgresql replicate

versi postgresql yang digunakan 9.3.4

Master server config

# vim /var/lib/pgsql/9.3/data/postgresql.conf

rubah lah beberapa variabel yang ada pada config tersebut seperti dibawah ini

wal_level = hot_standby
max_wal_senders = 1
wal_keep_segments = 50

selanjutnya buka file pg_hba.conf dan input IP server yang akan jadi slave server

# vim /var/lib/pgsql/9.3/data/pg_hba.conf

tambahkan baris berikut

host     replication     postgres       192.168.1.131/32     trust (bisa juga dengan md5)

jka sudah restart service postgresql nya

# service restart postgresql-9.3

selanjutnya lakukan backup data (snapshot) di server master untuk selanjutnya di pindahkan ke server slave

tahapanya sebagai berikut

# su - postgres
$ psql -c "SELECT pg_start_backup('replbackup');"
$ su - 
# tar cfP /tmp/db_file_backup.tar /var/lib/pgsql/9.3/data
# su - postgres
$ psql -c "SELECT pg_stop_backup();"

kemudian copy kan file hasil backup tersebut ke server slave

# scp /tmp/db_file_backup.tar root@192.168.1.131:/tmp

Slave server config

terlebih dahulu stop service postgresql

# service postgresql-9.3 stop

selanjut nya rename folder data di /var/lib/pgsql/9.3/ menjadi nama lain

# cd /var/lib/pgsql/9.3/
# mv data data-old

unzip data yang telah di kirim dari server master

# tar xvfP /tmp/db_file_backup.tar

hapuslah file postmaster.pid yang ada di dalam folder data yang setelah di ekstrak

# rm -f /var/lib/pgsql/9.3/data/postmaster.pid

kemudian editlah file postgresql.conf dan rubah variabel “hot_standby = off” menjadi “on”

# vim /var/lib/pgsql/9.3/data/postgresql.conf
hot_standby = on

selanjutnya buatlah sebuah file yang bernama recovery.conf yang tujuanya jika server master mengalami masalah misal disk fail atau server rusak, maka server slave akan bertindak menggantikan sebagai standby server (readonly transaction)

# touch /var/lib/pgsql/9.3/data/recovery.conf

berikut isi dari file recovery.conf

standby_mode = 'on'
primary_conninfo = 'host=192.168.2.119 port=5432'

jika sudah simpan file dan rubah owner file menjadi milik user postgres

# chown postgres:postgres /var/lib/pgsql/9.3/data/recovery.conf

selanjutnya start service postgresql di server slave

# service postgresql-9.3 start

untuk melakukan test silahkan coba buat database dan tabelnya di server master seharusnya data akan tereplicate ke server slave

dari konfigurasi replicate postgresql diatas akan kita sempurnakan agar jika server master fail maka slave server akan menjadi server master (full HA solution)

untuk konfigurasinya di master server ada tambahan sebagai berikut

enable kan pada bagian archive dan replication

archive_mode = on               
archive_command = 'rsync -avz %p postgres@192.168.1.131:archive/%f'                             
archive_timeout = 10
synchronous_standby_names = 'DB-Ads-slave'

pada bagian archive_command terdapat perintah rsync yang akan mengirim WAL Stream ke server slave, untuk dapat melakukan rsync harus di set agar rsync berjalan tanpa password

caranya

login sebagai user postgres

# su - postgres
$ ssh-keygen -t rsa

selanjutnya copy-kan id_rsa.pub ke server slave di home user postgres

$ ssh-copy-id postgres@192.168.1.131

tes ssh untuk memastikan sudah di allow tanpa password

config di server slave

buat direktori archive di /var/lib/pgsql

# su - postgres
$ mkdir /var/lib/pgsql/archive

pada file recovery.conf tambahkan baris berikut ini

restore_command = 'cp /var/lib/pgsql/archive/%f %p'
standby_mode = 'on'
primary_conninfo = 'host=192.168.2.119 port=5432 application_name=DB-Ads-slave'
archive_cleanup_command = '/usr/pgsql-9.3/bin/pg_archivecleanup /var/lib/pgsql/archive %r'

jika sudah resartlah service postgresql di server master dan slave

untuk melakukan pengecekan apakah replicate synchronus nya sudah berjalan, jalankan query berikut di postgresql

# select application_name,state,sync_priority,sync_state from pg_stat_replication;

jika hasilnya seperti ini maka sudah benar

 application_name |   state   | sync_priority | sync_state 
------------------+-----------+---------------+------------
 slave1           | streaming |             1 | sync
(1 row)`
Advertisements