Kamis, 25 Mei 2017

[Lab 9.3] Konfigurasi Postgresql Database Replication

 Assalamualaikum Warahmatullahi Wabarakatuh...

Lanjut ke lab 9.3 yang merupakan lab ke 3 yang membahas postgresql, dan kali ini kita akan melakukan konfigurasi database replication. Sebelumnya apa itu database replication? 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. Database replication dapat digunakan pada banyak sistem manajemen database, yang dimana proses ini terbentuk dari hasil sikronisasi antara  master dengan slave / node, atau bisa dibilang 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. adapun tujuan dibuatnya database replication adalah agar bersifat redudant, ketika salah satu server mati maka akan masih ada pengganti lainnya. Selain itu, database replication ini digunakan sebagai backup dari suatu database untuk mengantisipasi kehilangan data akibat serangan DOS ataupun faktor lainnya. Berikut Topologi yang kita gunakan untuk melakukan konfigurasi, lalu bagaimanakah konfigurasinya? Bismillah mari kita coba sama-sama...


-- Konfigurasi server DB --

1. Yang pertama kali kita lakukan adalah menambahkan domain untuk node1 nya atau yang berperan sebagai slave didalam folder forward.kamilah1 (kamilah.com) yang terdapat dalam direktori /var/named/


2. Tambahkan script seperti gambar dibawah ini yang diberi warna hijau, disini kita membahkan 1 domain yaitu node1.kamilah.com dengan menggunakan ip 192.168.43.30.


3. Setelah itu kita akan melakukan pengeditan pada file reverse.kamilah yang terletak pada direktori /var/named/


4. Selanjutnya ketikkan script seperti gambar dibawah ini yang sudah diberi tanda berwarna hijau, dimana kita menambahkan satu domain yaitu node1.kamilah.com dengan ip 192.168.43.30.


5. Selanjutnya kita restart service namednya supaya konfigurasi yang kita lakukan dapat berjalan dengan baik dan benar.


6. Lakukan pengetesan dengan mengetikkan perintah dig (domain_yang_kita_buat).


7. Dan hasilnya seperti gambar dibawah ini yang menandakan kita telah berhasil menambahkan satu domain.


8. Kita akan melakukan pengeditan pada file kofigurasi postgresql yang terletak pada direktori /var/opt/rh/rh-postgresql95/lib/pgsql/data/


9. Pada baris 59, kita uncomment (menghapus tanda pagar) pada listen_addresses dan mengubah valuenya menjadi *.


10. pada baris 177, pada wal_level kita uncomment dan mengganti optionnya menjadi hot_standby. Pada baris 180, synchronous_commit nya kita uncomment juga dan mengganti valuennya menjadi local

Keterangan :
  • Write-Ahead Logging / WAL adalah suatu 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 kita menggantinya menjadi hot_standby yaitu 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 suatu opsi yang memungkinkan transaksi antara server DB dan Replica 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. Disini saya mengaurnya value nya menjadi local, karena saya membuat sinkronisasi antar master dan salve. Dan kita mengubahnya menjadi local, dimana commit menunggu sampai catatan transaksi diputar ke disk lokal. 

11. Pada baris 220, kita uncomment archive_mode dan mengubah optionnya menjadi on. Pada baris 212, kita uncomment juga archive_command dan mengubah optionnya menjadi command atau suatu perintah yang digunakan untuk perngarsipan.

Keterangan :
  • archive mode adalah opsi yang digunakan sebagai pengaturan mode arsip, Ketika archive_mode diaktifkan on, maka WAL segmen dikirim ke penyimpanan arsip dengan mengatur archive_command. archive_mode tidak dapat diaktifkan saat wal_level disetel 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.

12. Pada baris 228, kita uncomment max_wal_sender, dimana max wal sender ini digunakan untuk menuntukan jumlah koneksi maksimum dari standby server. karna disini kita hanya mempunyai dua server, yaitu master dan slave / node1, maka disini kita atur valuenya menjadi 2. Pada baris 230 kita uncomment juga wal_keep_segments, dimana Wal keep segments ini merupakan besar logfile segments, dan satuannya adalah  MB. Pada contoh ini kita atur menjadi 10.


13. Pada baris 242, kita uncomment synchronous_standby_names nya yang merupakan pendefinisian dari nama server standby yang akan digunakan untuk database replication. Nama yang dimaksud yaitu berupa hostname. 


14. Selanjutnya kita akan melakukan pengeditan pada file kofigurasi pg_hba.conf yang terletak pada file /var/opt/rh/rh-postgresql95/lib/pgsql/data/


15. Cari script seperti gambar dibawah ini yang diberi tanda berwarna hijau dibawah ini. Kita uncomment setiap local host yang ada dan edit yang sebelumnya masih user pogtres, ubah menjadi replica, karena pada tahap selanjutnya kita akan membuat user replica. Edit ketiga host tersebut, dimana 1 host dengan ip loopback, dan 2 sisanya menggunakan ip dari sever master dan ip slave / node1, jangan lupa untuk mengatur methodnya menjadi md5


16. Ketikkan perintah restart seperti gambar dibawah ini, supaya konfigurasi yang kita lakukan berjalan dengan baik dan benar.


17. Selanjutnya kita akan masuk kedalam shell postgres dengan mengetikkan perintah su - postgres. dan disinilah kita akan membuat user replica, dan isikan passwordnya sesuai kemauan kita.

-- Konfigurasi node1 (server replica) --

1. Sebelumnya kita stop terlebih dahulu service postgresql yang terdapat pada server node1 ini.


2. Selanjutnya masuk kedalam direktori data, dengan menggunakan perintah cd / change directory, dimana letak direktori data ini di /var/opt/rh/rh-postgresql95/lib/pgsql/data/. dan kita hapus semua file yang terdapat dalam direktory data tersebut dengan menggunakan perintah rm - rf *


3. Jika sudah, maka kita akan masuk kedalam shell postgres dengan menggunakan perintah su - postgres dan disini kita akan melakukan sinkronisasi antar server slave / node1 dan server master / controller.

Keterangan :
  • pg_basebackup digunakan 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.29 merupakan pendifisian bahwa base backup cluster database berasal dari host 192.168.43.29 yang merupakan ip server master / controller 
  • -merupakan pendifisian dari user, pada contoh ini user yang kita gunakan 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 digunakan untuk membuat catatan terhadap semua log yang dihasilkan selama backup

4. Setelah itu keluar dari shell postgres dengan menggunakan perintah exit. Dan sekarang kita akan melakukan pengeditan file konfigurasi.conf. Karena kita sudah masuk kedalam direktori data maka kita langsung ketik seperti gambar dibawah ini, kita tidak maka kita ketikkan letak spesifiknya yaitu /var/opt/rh/rh-postgresql95/lib/pgsql/data/



5. Pada baris 251, jika sebelumnya pada server master db syntak wal_level kita atur menjadi hot_standby. Nah sekarang pada server slave / node1 ini kita harus menyalakan hot_standby nya dengan cara uncomment dan menggantikan optionnya menjadi on.



6. Selanjutnya kita copy file recovery.conf.sample dan kita ganti nama file tersebut menjadi recovery.conf.


7. Jika sudah, sekarang saatnya untuk mengedit file kofigurasi yaitu file recovery.conf tersebut, 
  • pada baris 44 restore_command dimana  restore command 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 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 dalah, proses penyalinannya secara secure, yaitu melalui ssh.
  • Pada baris 116, uncomment Standby_mode pada slave / node1 dengan cara dan ubah optionnya menjadi on. Standy mode ini digunakan untuk Menentukan apakah akan memulai server PostgreSQL sebagai standby. Jika parameter ini aktif, server tidak akan berhenti untuk me-recovery 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.
  • Pada baris 123 uncomment primary_conninfo, Primary conninfo ini digunakan menentukan string koneksi yang akan digunakan agar server standby terhubung dengan server primary / server master db. 
Keterangan untuk baris 123 :

  • host=192.168.43.29 merupakan pendefinisan dari server primary.
  • port=5432 yaitu port yang digunakan oleh postgresql.
  • user=replica merupakan user replikasi, yang kita buat sebelumnya.
  • passwd=kamilah merupakan password dari user replica.
  • application_name=kamilah-node1 merupakan hostname dari server slave / node1.

8. Jika sebelumnya kita mematikan service postgresql nya maka sekarang kita menjalankannya kembali dengan mengetikkan perintah seperti gambar dibawah ini, agar konfigurasi yang kita lakukan dapat berjalan dengan baik.


9. Jalankan firewall, dan izinkan service postgresql dengan mengetikkan perintah dibawah ini, jangan lupa untuk di reload supaya dan berjalan dengan baik.

-- Konfigurasi server controller / master -- 

1. Masuk kedalam shell prostgres dengan mengetikkan perintah su - postgres, dan setelah itu lakukan pengecekan apakah sudah sinkronasi atau belum antara server master dan server slave dengan mengetikkan perintah seperti gambar dibawah ini, dan dibawah ini merupakan kita telah berhasil menyinkronisasikan antar keduanya.


2. Sekarang kita akan coba membuat user baru dengan akses super user, karena user biasa tidak bisa membuat database, jangan lupa untuk menyertakan passwordnya juga. 

-- Verifikasi --

1. Saatnya untuk melakukan veifikasi dengan membuka browser dan ketikkan (domain)/phpPgAdmin dan ini merupakan tampilan utama dari phpPgAdmin.


2. Selanjutnya kita akan melakukan login dengan klik postgreSQL > isikan kolom username dan password sesuai dengan yang kita buat dengan akses super user > klik login.


3. Dan terlihat disini kita masuk menggunakan user kamilahaprilia, dan sekarang kita akan coba membuat database baru dengan mengetikkan create database.


4. Isikan namanya sesuai dengan kemauan kita, dan disini kita coba beri komennya seperti gambar dibawah ini, jika sudah maka klik create.


5. Terlihat disini dengan domain www.kamilah.com kita telah berhasil menambahkan satu database dan karena kita juga menggunakan user dengan akses superuser. 


6. Pengetesan kedua, dengan melakukan login ke server slave / replicanya yaitu node1 (domain yang kita buat sebelumnya yaitu node1.kamilah.com) dan kita login menggunakan username dan password yang sama.


7. Dan pastikan database yang kita buat sebelumnya pada domain www.kamilah.com ada pada node1.


Sekian yang dapat saya sampaikan, semoga bermanfaat untuk kita semua
Kurang lebihnya mohon maaf, Wassalamualaikum Warahmatullahi Wabarakatuh...

0 komentar:

Posting Komentar

sedikit informasi

klik tanda plus di pojok kanan atas untuk keperluan lainnya. Terimakasih..