Lab 9.3, Replication Setting on Postgresql

 
    Hai young society. Kembali lagi lita untuk melanjutkan lab kemarin, yaitu bagaimana caranya konfigurasi PhpPgAdmin di Postgresql, untuk kamu yang belum baca bisa dilihat disini. Oke disini kita akan mengkonfigurasi Replication database. Sebelumnya, apa itu Replication Database?


    Database Replication adalah metode yang dilakukan untuk menyalin dan mendistribusikan data dari database 1 ke databsase lainnya. Selanjutnya database tersebut akan salin sinkron sehingga konsistensi data terjamin. Proses replication ini terjadi jika terjadinya sinkronisasi antara server master dan slave, atau database yang asli dengan salinanya.

    Tujuan dari pembuatan replication ini adalah agar dapat membackup server utama jika terjadi down atau mati, maka server slave akan menggantikan server utama. Oke langsung saja kita konfigurasi :




Topology :






Konfigurasi Server Master :



1.  Pertama kita tambahkan dulu domain sub domain dulu untuk server slavenya. Pertama kita tambahkan dahulu ke file forwardnya

nano /var/named/forward.tkj





2.  Lalu kita tambahkan sub domainnya. Pada kasus ini Author memberikan subdomain node1. dan kita tambahkan juga IP Server dari node1nya.






3.  Setelah itu kita tambahkan sub domain tersebut di file reverse.

nano /var/named/reverse.tkj





4.  Lalu tambahkan sytax seperti dabawah ini sesuai dengan IP dan sub domain yang kalian pakai.






5.  Setelah itu kita restart service named nya agar konfigurasi tadi dapat berjalan.

systemctl restart named






6.  Lalu coba kita tes sub domain yang tadi kita konfigurasi dengan perintah DIG.







7.  Setelah itu kita konfigurasi file postgresql nya yang berada di

nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf





8.  Setelah itu kita uncoment wal_level, dana ubah optionnya menjadi host_standby. Dan uncoment juga synchronous_comit, dan ubah optionnya menjadi local.


Write-Ahead Logging (WAL) adalah 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. Dan disini Author mengaturnya menjadi Hot_standby. Hot Standby merupakan 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) adalah opsi yang memungkinkan transaksi antara server DataBase dan Replica selesai lebih cepat. Dengan synchronous commit ini, penundaan replikasi secara langsung mempengaruhi waktu penyelesaian transaksi pada master, dan dengan synchronous commit 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. Disini saya mengaturnya menjadi local, karena saya hanya membuat sinkronisasi antara master dan slave (local).





9.  Masih di file yang sama. Kali ini kita uncoment archive_mode dan ubah valuenya menajdi ON. Dan kita uncoment juga archive_command, dan atur valuenya menjadi syntax command utnuk pengarsipan.



    archive_mode adalah 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.  Masih di file yang sama. Kali ini kita uncoment max_wal_senders. Max_wall_senders ini berfungsi sebagai menentukan jumlah maksimum dari standby server. Disini Author isi valuenya dengan 2, karena disini kita hanya memiliki 2 server, yaitu master dan node1 (slave)

       Kemudian kita uncoment juga wal_keep_segments. Wall_keep_segement ini merupakan besaran log file segement, dan besaran yang digunakan adalah MB, dan disini juga kita isi valuenya menjadi 10 MB.







11.  Masih di file yang sama. Kali ini kita uncoment synchronous_standby_names. Sytax ini berfungsi sebagai penentu standby server manakah yang akan dijadikan database replication. Dan nama yang dimaksud adalah hostname.







12.  Selanjutnya kita konfigurasi file pg_hba.conf.

nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/pg_gba.conf




13.  Setelah itu cari systax seperti yang di tandai seperti dibawah ini, dan rubah konfigurasinya sesuai dengan gambar, tapi sesuai dengan IP address server yang kamu pakai.



    Uncomment setiap local host yang ada, kemudian edit yang sebelumnya masih user postgres, disini kita ubah menjadi replica, karena pada tahap selanjutnya kita akan membuat user replica. Disini kita lakukan pengeditan   pada ketiga host, 1 host dengan IP loopback, dan 2 host lainnya merupakan IP dari server master maupun slave (Server master dan Server DB Replica), Dan juga, atur semua method host nya menjadi md5. Sedangkan pada baris local biarkan seperti default, kita cukup mengganti nama user serta uncomment syntaknya saja.





14.  Setelah konfigurasi selesai, kita restart database postgresqlnya.


sytemctl restart rh-postgresql95-postgresql




15.  Setelah itu kita masuk ke shell postgresnya, buat user dan buat passwordnya.








Konfigurasi Server Node1 (slave) :


16.  Pertama kita stop dahulu service postgresqlnya.

systemctl stop rh-postgresql95-postgresql




17.  Setelah itu kita masuk ke direktori data dari postgresql nya.

cd /var/opt/rh/rh-postgresql95/lib/pgsql/data




18.  Kemudian kita hapus semua file yang ada didalam direktori tersebut.

rm -rf *




19.  Lalu kita masuk shell postgresqlnya. Lalu lakukan sinkronisasi antara server master dengan server slave dengan perintah pg_basebackup.


    pg_basebackup digunakan untuk mengambil base backup cluster database Postgresql yang sedang berjalan. Pg_basebackup berfungsi untuk membuat salinan biner dari file cluster database, sambil memastikan sistem dimasukkan ke dalam dan keluar dari mode backup secara otomatis

    -h 192.168.100.121 merupakan pendifisian bahwa base backup cluster database berasal dari host 192.168.100.121 (IP server master db)

    -U merupakan pendifisian dari user, pada contoh ini usernya adalah replica. User ini yang tadi kita buat di server master sebelumnya.

    -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 digunakan untuk membuat catatan terhadap semua log yang dihasilkan selama backup





20.  Masih di dalam directory data. Selanjutnya kita konfigurasi file postgresql.conf nya.

nano postgresql.conf




21.  Setelah itu kita uncoment hot_stanby nya menjadi ON. Pada server master tadi kita mengubah wal_level menjadi hot_stanby. Maka pada server slave ini hot_standbynya harus kita ON kan







22.  Kemudian kita copy file recovery.conf.sample dan kita ubah nama file tersebut menjadi recovery.conf.
cp /opt/rh/rh-postgresql95/root/usr/share/pgsql/recovery.conf.sample /var/opt/rh/rh-postgresql95/lib/data/recovery.conf




23.  Kemudian kita konfigurasi file recovery yang tadi kita copy.

nano recovery.conf




24.  Kemdian cari syntax seperti dibawah ini
 

    Restore command 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 diikuti oleh IP dari server master db 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, Sedangkan maksud dari secure copy in adalah, proses penyalinannya dilakukan secara secure, yaitu via ssh.





25.  Kemudian uncoment stanby_mode dan ubah valuenya menjadi ON.


Standy mode digunakan untuk menentukan apakah akan memulai server PostgreSQL sebagai standby. Jika parameter ini aktif, server tidak akan berhenti untuk merecovery saat akhir WAL
yang diarsipkan tercapai, namun akan terus mencoba melanjutkan recovery (pemulihan) dengan mengambil segmen WAL baru menggunakan restore_command dan atau dengan menghubungkan
ke server utama seperti yang ditentukan oleh pengaturan primary_conninfo.
 




26.  Kemudian kita uncoment juga primary_cominfo. Primary conninfo ini digunakan menentukan string koneksi yang akan digunakan agar server standby terhubung dengan server primary (server master db). Edit baris tersebut menjadi seperti yang sudah Author tandai pada gambar dibawah.


    host=192.168.100.121 merupakan pendefinisan dari server primary (server master)

    port=5432 merupakan port yang digunakan postgresql untuk replikasi

    user=replica merupakan user replikasi yang tadi kita buat pada server master sebelumnya

    password=akmal merupakan password dari user replika

    application_name=node1 merupakan hostname dari server master db untuk server slave





27.  Kemudian kita start dan enable service postgresqlnya.









Konfigurasi Server Master :


28.  Pertama kita masuk ke shell postgresqlnya. Kemudian kita cek antara sever master dan server slave apakah sudah saling tersinkron atau belum dengan perintah psql -c "select application_name,state, sync_priority, sync_state from pg_stat_replication;" . Dan jika pada bagian sync_state sudah ter sync maka keduanya sudah saling sinkron.









Vertifikasi Client :


29.  Coba login ke database dengan PhpPgAdmin melalui web dari server master.








30.  Disini coba kita buat database







31.  Pastika database yang tadi kita buat sudah terbuat.








32.  Kemudian coba login dengan menggunakan server node1. dan login ke database. Pasti database yang tadi kita buat di server master tadi akan otomatis ada di server database slave juga.









  Nah segitu dulu untuk lab kali ini. Jika ada kesalahan gambar atau penjelasan mohon di koreksi dan bantu Author merevisi nya. Sekian dulu perjumpaan kita. Semoga bermanfaat dan Wassalamualaikum..WR .WB

Comments

Popular Posts