Jun 4, 2017

LAB 9.3 Replication Database PostgreSQL CentOS 7

Pengertian

Database Replication adalah suatu metode yang digunakan untuk menyalin dan mendistribusikan data dari satu database ke database yang lain. Selanjutnya, mensinkronisasikan antar database, sehingga konsistensi data dapat terjamin. Database Replication dapat digunakan pada banyak sistem manajemen Daatabase, 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 pembuatan database raplication ini adalah membuat pengganti apabila server utama mati. Selain itu juga sebagai backup dari database guna mengantisipasi hal-hal yang tidak diinginkan terjadi pada database.

Persiapan

Persiapan yang diperlukan masih sama yaitu Sistem Operasi CentOS 7 sebagai server dan Sistem Operasi Windows sebagai client. Disini saya telah mengkonfigurasi web server Apache sebelumnya. Pastikan server terhubung ke internet.

Topologi


  • IP Address Server Master (Controller) = 192.168.43.100/24
  • IP Address Server Slave (Node 1) = 192.168.43.200/24
  • IP Address Client = 192.168.43.101/24

Konfigurasi Server Master ( Controller )

1.  Edit file konfigurasi postgresql dengan perintah berikut.


2.  Lalu uncomment wal_level serta atur optionnya menjadi hot_standby. Setelah itu uncomment juga pada bagian synchronos_type lalu ubah optionnya menjadi local.

Keterangan :
  • 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. 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) adalah 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 (local).

3. Selanjutnya temukan bagian archive_mode dan atur optionnya menjadi on. Serta uncomment archive_command dan atur optionnya menjadi command atau perintah yang digunakan untuk mengarsip.


4.  Masih pada file yang sama, scroll kebawah dan uncomment pada bagian max_wal_sender dan wal_keep_segments. Max_wal_sender digunakan untuk menentukan koneksi maksimum dari standby server. Disini saya mengaturnya menjadi 2 karena hanya ada 2 server yang saya gunakan. Sedangkan wal_keep_segments merupakan besar logfile segments dengan satuan MB. Disini saya mengaturnya menjadi 10.


5.  Kemudian temukan dan uncomment pada bagian synchronous_standby_names, dimana baris ini merupakan pendefinisian nama dari standby server yang digunakan untuk database replication. Masukkan hostname dari standby server tersebut.


6.  Berikutnya edit file pg_hba.conf, buka file dengan perintah berikut.


7.  Temukan script dibawah ini, kemudian uncomment setiap local host yang ada, kemudian edit setiap user pogtres, ubah menjadi replica, karena nantinya kita akan membuat user replica. Lakukan pengeditan pada ketiga host, 1 host dengan IP Loopback, dan 2 lainnya merupakan IP dari sever master maupun slave. Atur ketiganya dengan method menjadi md5. Sedangkan pada baris local biarkan default, cukup ganti nama user serta uncomment scriptnya saja.


8.  Kemudian restart service postgresql agar konfigurasi dapat running.


9.  Setelah itu akses shell postgresql dengan perintah su - postgres.


10.  Selanjutnya buat user baru yaitu replication beserta passwordnya.


Konfigurasi Server Slave ( Replication )

1.  Pertama-tama hentikan terlebih dahulu service postgresql.


2.  Setelah itu remove semua file pada direktori /var/opt/rh/rh-postgresql95/lib/pgsql/data/.


3.  Lalu akses kembali shell postgresql dengan perintah su - postgres.

4.  Kemudian lakukan sinkronisasi dari server slave ke server master dengan perintah berikut.

Keterangan :
  • pg_basebackup digunakan untuk mengambil base backup cluster database PostgreSQL yang sedang berjalan.
  • -h 192.168.43.100 merupakan pendifisian bahwa base bacup cluster database berasal dari host 192.168.43.100 (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 digunakan untuk membuat catatan terhadap semua log yang dihasilkan selama backup.

5.  Lalu keluar dari shell postgresql.


6.  Selanjutnya edit file postgresql.conf yang merupakan file konfigurasi postgresql, buka file dengan perintah berikut.


7.  Karena pada server master tadi kita telah mengubah wal_level menjadi hot_standby, maka kita perlu mengatur bagian hot_standby pada server slave. Uncomment bagian hot_standby tersebut dan ubah optionnya menjadi on.


8.  Kemudian copy file recovery.conf.sample ubah dengan nama recovery.conf dengan perintah berikut.


9.  Lalu edit file yang sudah di copy.


10.  Temukan dan uncomment bagian restore_command. Restore command ini merupakan Perintah shell yang digunakan untuk mengambil segmen file WAL yang diarsipkan. 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 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 ini adalah, proses penyalinannya secara aman yaitu via ssh.


11.  Setelah itu temukan script standby_mode dan ubah optionnya menjadi on. Ini dilakukan untuk mengaktifkan mode standby pada server postgresql.


12. Selanjutnya temukan dan uncomment bagian primary_conninfo. Ini digunakan untuk menentukan string koneksi yang akan digunakan server standby (server slave) untuk terhubung dengan server primary (server master). Ubah menjadi seperti pada gambar berikut.

Keterangan :
  • host=192.168.43.100 merupakan pendefinisan dari server primary (IP Address server master).
  • port=5432 yaitu port yang digunakan postgresql.
  • user=replica merupakan user replikasi yang telah dibuat.
  • passwd= anitawnrn merupakan password dari user replika.
  • application_name= node1-anita merupakan hostname dari server slave.
Sebelumnya, pastikan port 5432 atau service postgresql sudah diizinkan pada firewall kedua server, untuk caranya bisa kalian lihat pada postingan saya sebelumnya.


13.  Jalankan kembali service postgresql dengan perintah berikut.


Konfigurasi Server Master ( Controller )

1.  Akses kembali shell postgresql dengan perintah su - postgres. Kemudian cek apakah sinkronisasi antara kedua server sudah berhasil atau belum. Jika sudah berhasil makan akan tampak tulisan sync pada tabel berikut.


2.  Untuk verifikasi selanjutnya, buatlah database baru serta user yang akan digunakan untuk login phpPgAdmin.


Verifikasi

1. Untuk verifikasi dapat dilakukan dengan mengakses database melalui web menggunakan phpPgAdmin. Login ke phpPgAdmin dengan user yang ada.


2.  Buat database baru dengan klik Create Database. Kemudian masukkan nama database dan klik Create.


3.  Lalu cek dan pastikan database yang dibuat pada server master tadi terdaftar juga pada server slave.


4.  Setelah itu cek pada server slave (replica), login ke phpPgAdmin.


Selesai.
Sekian untuk tutorial replikasi database mysql. Jika ada kekurangan saya minta maaf. Selamat mencoba dan semoga bermanfaat.


0 komentar:

Post a Comment