[CentOS 7] LAB 9.3 Konfigurasi Database Replication PostgreSQL


Pada Kesempatan kali ini admin mau sharing mengenai konfigurasi database replication dengan menggunakan PostgreSQL.

Database replication adalah suatu metode yang digunakan untuk menyalin dan mendistribusikan data dari satu database ke database yang lain. Dan selanjutnya, mensinkronisasikan antar database, sehingga konsistensi data dapat terjamin. Replication database dapat digunakan pada banyak sistem manajemen Database, yang dimana proses ini terbentuk dari hasil sikronisasi antara master dengan slave, atau antara yang asli dan salinannya, yang tentunya memerlukan beberapa konfigurasi tambahan agar Replication ini dapat bekerja. Dengan menggunakan teknik replikasi ini, data dapat didistribusikan ke lokasi yang berbeda melalui koneksi jaringan lokal maupun internet.

Tujuan dari dibuatnya database replication ini adalah agar bersifat redudant, Maksudnya ketika salah satu server mati maka nantinya masih ada pengganti lainnya. Selain itu, Replication database ini digunakan sebagai backup dari suatu database untuk mengantisipasi kehilangan data akibat serangan DOS ataupun faktor lainnya.

Untuk melakukannya kita memerlukan 2 server. yang satu bertindak sebagai master dan yang satunya lagi bertindak sebagai server slave. Untuk Server slave yang admin gunakan adalah hasil cloningan dari server master, oleh sebab itu pada si server slave sudah terinstall PostgreSQL beserta phpPgAdmin.

Topologi
Berikut topologi yang digunakan untuk tutorial kali ini




Konfigurasi Server Master Fiqih
1) Pertam-tama, lakukan konfigurasi DNS pada server untuk menambahkan domain untuk node1. Disini, admin edit file forward zone nya terlebih dahulu.
 nano /var/named/[file forward zone]


2) Didalam file forward tersebut, tambahkan sintak untuk si node1 nya seperti pada gambar dibawah ini dengan menambahkan pula IP address nya.



3) Lalu, edit juga file reverse zone nya
  nano /var/named/[file reverse zone]


4) Didalam file reverse tersebut, tambahkan sintak untuk si node1 nya seperti pada gambar dibawah ini dengan menambahkan pula IP address nya.



5) Lakukan restart service named agar konfigurasi yang dilakukan sebelumnya berjalan (running)
  systemctl restart named


6) Lakukan pengetesan domain node1 dengan perintah dig
 dig [domain node 1]


7) Setelah itu edit file postgresql.conf yang terletak di directory /var/opt/rh/rh-postgresql95
nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf


8) Edit pada line wal_level yang option pertamanya minimal diubah menjadi hot_standby dan edit juga pada line synchronous_commit yang option pertamanya on diubah menjadi local. Dan juga uncomment kedua line tersebut dengan menghilangkan tanda pagar [#] di depan kedua sintak tersebut.
[Line 173] wal_level
[Line 176] synchronous_commit
Keterangan :
  • Write-Ahead Logging (WAL) : Merupakan metode standar untuk memastikan integritas data. Konsep WAL adalah bahwa perubahan pada file data (di mana tabel dan indeks berada) harus ditulis hanya setelah perubahan tersebut dicatat, yaitu setelah catatan log yang menjelaskan perubahan telah terdapat pada penyimpanan permanen. wal_level menentukan berapa banyak informasi yang ditulis ke WAL. Disini saya mengaturnya menjadi hot_standby. Hot Standby adalah istilah yang digunakan untuk menggambarkan kemampuan untuk terhubung ke server dan menjalankan query read-only sementara server sedang berada dalam recovery arsip atau mode standby. 
  • Synchronous_commit (synchronous replication) : Merupakan opsi yang memungkinkan transaksi antara Server Master dan Server Slave selesai lebih cepat. Dengan synchronous commit, penundaan replikasi secara langsung mempengaruhi waktu penyelesaian transaksi pada master, dan dengan synchronous comit ini, master dapat melanjutkan dengan kecepatan penuh. Synchronous commit menjamin bahwa data ditulis ke setidaknya dua node sebelum pengguna atau aplikasi diberitahu bahwa transaksi telah dilakukan. Karena disini ane membuat sinkronasi antara master dan slave (local), maka optionnya ane atur atau ubah menjadi local.


9) Masih didalam file postgresql.conf. Edit pada line archive_mode yang option pertamanya off diubah menjadi on dan edit juga pada line archive_command yang option pertamanya kosong diubah menjadi sintak yang digunakan untuk pengarsipan. Dan juga uncomment kedua line tersebut dengan menghilangkan tanda pagar [#] di depan kedua sintak tersebut.
[Line 206] archive_mode
[Line 208] archive_command
Keterangan :
  • archive_mode : Merupakan opsi yang digunakan sebagai pengaturan mode arsip, ketika archive_mode diaktifkan, WAL segmen dikirim ke penyimpanan arsip dengan mengatur archive_command. archive_mode tidak dapat diaktifkan saat wal_level diatur menjadi minimal 
  • archive_command : Merupakan command yang digunakan untuk mengarsip logfile segmen %p : Dalam string digantikan oleh nama path dari file yang akan diarsipkan, dan %f diganti hanya dengan nama file 


10) Edit pada line max_wal_level dengan mengeditnya menjadi 2 dan edit juga pada line wal_keep_segments dengan mengeditnya menjadi 15. Dan juga uncomment kedua line tersebut dengan menghilangkan tanda pagar [#] di depan kedua sintak tersebut.
[Line 224] max_wal_senders
[Line 226] wall_keep_segments


11) Edit pada line synchronous_standby_names dengan mengeditnya dengan hostname Server Slave. Karena pada baris ini merupakan pendefinisian dari nama server yang akan digunakan sebagai replica database. Dan juga uncomment line tersebut dengan menghilangkan tanda pagar [#] di depan sintak tersebut.
[Line 238] synchronous_standby_names


12) Setelah itu edit file pg_hba.conf yang terletak di directory /var/opt/rh/rh-postgresql95/lib/pgsql/data.
nano /var/opt/rh/rh-postgresql95/lib/data/pg_hba.conf


13) Lau edit pada line 87. Edit yang defaultnya sebelumnya postgres menjadi replica. Pada host yang kedua masukkan IP Address si server master dan Untuk host yang ketiga masukkan IP Address Server Slave. Dan untuk semua host methodnya diubah menjadi md5. Dan juga uncomment setiap line tersebut dengan menghilangkan tanda pagar [#] di depan sintak-sintak tersebut.



14) Lakukan restart service postgresql agar konfigurasi yang dilakukan sebelumnya dapat running (berjalan dengan baik)
systemctl restart rh-postgresql95-postgresql


15) Masuk ke database PostgreSQL
su - postgres


16) Buat user replica beserta passwordnya
createuser --replication -P [namanya]



Konfigurasi Server Slave fiqih_node1
1) Setting hostname sesuai nama hostname yang di setting di synchronous_standby_names



2) Stop service postgresql di server slave
systemctl stop rh-postgresql95-postgresql


3) Masuk ke directory /var/opt/rh/rh-postgresql95/lib/pgsql/data/. Lalu hapus semua file yang ada didalamnya
cd /var/opt/rh/rh-postgresql95/lib/pgsql/data/
rm -rf *


4) Masuk lagi ke database PostgreSQL
su - postgres


5) Lakukan sinkronasi ke server master fiqih
pg_basebackup -h 192.168.43.110 -U replica -D /var/opt/rh/rh-postgresql95/lib/pgsql/data/ -P --xlog
exit
Keterangan :
  • pg_basebackup = Untuk mengambil base backup cluster database PostgreSQL yang sedang berjalan. Pg_basebackup membuat salinan biner dari file cluster database, sambil memastikan sistem dimasukkan ke dalam dan keluar dari mode backup secara otomatis 
  • -h 192.168.43.110 = Merupakan pendifisian bahwa base bacup cluster database berasal dari host 192.168.43.110 (IP Server Master) 
  • -U = Merupakan pendifisian dari user, pada contoh ini usernya yaitu replica 
  • -D /var/opt/rh/rh-postgresql95/lib/pgsql/data/ = Merupakan pendefinisan pada Directory mana file backup cluster database tersebut
  • -P = Merupakan pendifinisian dari Password 
  • --xlog = Untuk membuat catatan terhadap semua log yang dihasilkan selama backup 


6) Lalu edit file postgresql.conf yang terletak pada directory /var/opt/rh/rh-postgresql95/lib/pgsql/data/
nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf


7) Edit pada line hot_standby yang option pertamanya off diubah menjadi on. Dan juga uncomment line tersebut dengan menghilangkan tanda pagar [#] di depan sintak tersebut.
[Line 247] hot_standby


8) Copy file recovery.conf.sample dan ubah juga namanya menjadi recovery.conf
cp /opt/rh/rh-postgresql95/root/usr/share/pgsql/recovery.conf.sample /var/opt/rh/rh-postgresql95/lib/pgsql/data/recovery.conf


9) Lalu edit file recovery nya yang terletak pada directory /var/opt/rh/rh-postgresql95/lib/pgsql/data/
nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/recovery.conf


10) Edit pada line restore_command. Dan uncomment line tersebut dengan menghilangkan tanda pagar [#] di depan sintak tersebut.
[Line 44] restore_command
Keterangan :
  • Restore comman = ini merupakan Perintah shell yang digunakan untuk mengambil segmen file WAL yang diarsipkan. Parameter ini diperlukan untuk pemulihan arsip, tapi opsional untuk streaming replikasi. Setiap% f dalam string diganti dengan nama file yang akan diambil dari arsip, dan setiap% p diganti dengan nama tujuan jalur salin pada server. Pada command ini terdapat perintah
  • scp (secure copy) dan dibelakangnya diikut oleh IP dari Server Master serta tujuan pada directory mana file tersebut diletakan, ini berarti segmen file WAL yang diarsipkan di salin dari host tersebut ke destination directory yang telah ditentukan.


11) Edit pada line standby_mode dan ubah menjadi on dan edit juga pada line primary_conninfo dan atur sesuai pada gambar. Untuk host edit denganIP si server master, port edit menjadi 5432, user edit menjadi nama user yang sebelumya dibuat di server master beserta passwordnya, dan untuk application_named atur dengan nama hostname server slave.
[Line 116] standby_mode
[Line 123] primary_conninfo 


12) Lakukan start dan enable postgresql agar berjalan otomatis saat reboot
systemctl start rh-postgresql95-postgresql
 systemctl enable rh-postgresql95-postgresql



Konfigurasi Server Master Fiqih
1) Masuk ke database PostgreSQL
su - postgres


2) Cek apakah sudah berhasil melakukan sinkronasi antara server master dan server slave. Apabila muncul output seperti pada gambar dibawah ini berarti berhasil sinkron
psql -c "select application_name, state, sync_priority, sync_state from pg_stat_replication;"



Verifikasi Client
1) Setting DNS server pada client di arahkan ke IP address si server. Lalu, lakukan verifikasi akses melalui web browser menggunakan nama domain dengan menambahkan /phpPgAdmin setelahnya Lakukan login menggunakan user yang pernah dibuat pada lab 9.1
 [nama domain]/phpPgAdmin


2) Lalu buat schema baru klik "Create schema"



3) Isi Sesuai keinginan lalu klik "Create"



4) Verifikasi schema berhasil dibuat



5) Lalu coba buat tabel baru di schema coba-coba. Klik "Create table"



6) Isi sesuai keinginnan klik  "Next"



7) Isi sesuai keinginnan klik "Create"



8) Verifiaksi tabel berhasil dibuat



9) Berikut isi dari tabel tersebut



10) Dan coba akses subdomain yang dimiliki server slave yaitu node1.fiqih.net yang disertai /phpPgAdmin di belakangnya. Login dengan user yang tadi dibuat schema dan tabel. klik "Login"



11) Verifikasi Bahwa schema dan tabel yang dibuat di server master



12) Terlihat juga tabel yang tadi dibuat di server master















Cukup sekian materi [CentOS 7] LAB 9.3 Konfigurasi Database Replication PostgreSQL yang dapat saya sharing

Tunggu tutorial selanjutnya
Terima kasih sudah berkunjung
Mohon maaf jika ada kekurangan dan
Semoga bermanfaat
Previous
Next Post »