Friday 2 June 2017

LAB Centos 9.3 | PostgreSQL | Replication

Assalamualaikum Wr. Wb.

Yoo gan :v kembali lagi diblog ini .-. . Sebelumnya ane minta maaf karena sekarang puasa :v, mohon dimaafkan yoo :v. Yup masih dihari yang cerah ini alangkah baiknya Saya membawa materi lanjutan dari lab sebelumnya bisa anda lihat dibagian bar admin server :v. Ya kali ini Saya akan mengshare tentang PostgreSQL yaitu Replikasi Databases. Replikasi itu apa sih gan ?
Replikasi Databases adalah  metode yang digunakan untuk menyalin dan mendistribusikan data dari satu database ke database yang lain. Yang selanjutnya, mensinkronisasikan antar database, sehingga konsistensi data bisa terjamin. Replikasi Database juga dapat digunakan pada banyak sistem manajemen Database, yang mana proses ini terbentuk dari hasil sikronisasi antara  master dengan slave, atau antara Server Database yang asli dengan 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 dibuatnya Replikasi Database adalah agar Server bersifat redudant, jadii ketika salah satu server mati maka akan ada Server pengganti lainnya. Selain itu, Replikasi Database ini juga bisa digunakan sebagai backup dari suatu database untuk mengantisipasi kehilangan data akibat serangan DDOS atau yang lainnya.

Jadi disini saya anggepannya ada dua Server yang satu jadi master yang satunya lagi jadi Slave.

Ya Cukup singkat materi tentang replikasi, maka Lanjut ke topologinya. Oh iya, Disini Saya melanjutkan dari materi Installasi dan PHPPGadmin pada postgre. mungkin jika belom buat servernya maka bisa lihat dibar admin server.

Topologi
Ya jika sudah lihat topologinya maka Lanjut ke Konfigurasinya guys :v ckckck

Master Server

1. Pertama, kita buat Subdomain untuk Slave Server terlebih dulu, caranya dengan mengedit file forward DNS
Setelah itu tambahkan syntaks seperti gambar dibawah, jangan lupa untuk sesuaikan IP nya
2. Kemudian kita edit juga file reverse DNS nya

Lalu tambahkan syntaks seperti berikut, jangan lupa untuk sesuaikan dengan IP kalian masing-masing

3. Setelah itu, restart service named agar konfigurasi DNS yang sudah dilakukan dapat berjalan

4. Selanjutnya, kita cek apakah subdomain yang sudah dibuat berhasil berjalan atau tidak dengan perintah dig. Dan ternyata subdomain yang sudah saya buat sudah berhasil
5. Selanjutnya, edit file konfigurasi postgresql yaitu postgresql.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/
 Setelah itu, kita uncomment wal_level yang terletak di line 173, setelah itu atur optionnya menjadi hot_standby. Kemudian Uncomment juga pada synchronous_type, dan 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. Dan disini saya 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 value nya menjadi local, karena saya hanya membuat sinkronisasi antara master dan slave (local)
Setelah itu kita pergi menuju line 206, kemudian uncomment syntak archive_mode, lalu atur optionnya menjadi on. Setelah itu uncomment syntak archive_command dan atur optionnya menjadi command atau perintah yang digunakan untuk pengarsipan.
Keterangan : 

  • 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.
Masih di file konfigurasi yang sama, sekarang kita menuju line 224, lalu cari dan uncomment syntak max_wal_sender. Max_wal_sender ini digunakan untuk menuntukan jumlah koneksi maksimum dari standby server. karena disini saya hanya mempunyai dua server, yaitu master dan slave, maka disini saya mengatur valuenya menjadi 2. Kemudian uncomment juga pada baris wal_keep_segments. Wal keep segments ini merupakan besar logfile segments, satuannya MB.Disini saya mengaturnya menjadi 10 

Sekarang kita menuju line 238, kemudian cari dan uncomment pada baris synchronous_standby_names, baris ini merupakan pendefinisian dari nama server standby mana yang akan akan digunakan untuk Database Replication. Nama yang dimaksud yaitu berupa hostname


6. Selanjutnya, edit file pg_hba.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/  

Lalu cari syntaks seperti pada gambar dibawah ini , Tepatnya diakhir line file conf :v
Setelah itu 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 DB 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.


7. Selanjutnya, restart service postgresql agar konfigurasi yang baru dapat berjalan


note=bila anda tidak merasa nyaman dengan servicenya maka bisa tambahkan firewall-cmd dengan cara "firewall-cmd --add-service=postgresql --permanent" lalu reload
8. Kemudian kita masuk ke shell postgres, lalu buat user replica beserta passwordnya
Slave Server

1. Pertama, kita stop terlebih dahulu service postgresql nya
2. Setelah itu, kita masuk kedirektori /var/opt/rh/rh-postgresql95/lib/pgsql/data dengan menggunakan perintah
Lalu kita remove semua file yang ada pada direktori tersebut dengan perintah
3. Selanjutnya, kita masuk ke shell postgresql

Kemudian lakukan sinkronisasi dari Slave Server ini ke Master Server database

Keterangan:
  • 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.1.123 merupakan pendifisian bahwa base backup cluster database berasal dari host 192.168.1.123 (IP server master db)
  • -U merupakan pendifisian dari user, pada contoh ini usernya adalah 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. Selanjutnya, edit file postgresql.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/
Masih ingat kan tadi pada server master db, syntak wal_level kita atur menjadi hot_standby. Nah maka dari itu pada server slave ini kita harus menyalakan hot_standby nya dengan cara uncomment pada baris tersebut, kemudian atur optionnya menjadi on
5. Setelah itu, kita copy file recovery.conf.sample, kemudian ubah nama file tersebut menjadi recovery.conf 

Lalu edit file recovery.conf yang sudah tercopy tadi

Setelah itu, cari dan uncomment syntak restore_command yang terletak di line 44
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.

Lalu kita menuju line 116, kemudian hidupkan Standby mode pada slave dengan cara uncomment pada baris standby_mode dan ubah optionnya 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.

Dan sekarang kita menuju line 123, kemudian cari dan uncomment syntak primary_conninfo, 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 saya tandai pada gambar dibawah
Keterangan :

  • host=192.168.1.123 merupakan pendefinisan dari server primary
  • port=5432 merupakan port yang digunakan postgresql untuk replikasi
  • user=replica merupakan user replikasi
  • password=12345 merupakan password dari user replika
  • application_name=slave merupakan hostname dari server master db
6. Setelah itu kita start dan enable service postgresql nya


Master Server

1. Pertama, kita masuk ke shell postgres

Setelah itu lakukan pengecekan, apakah antara server master dengan slave sudah berhasil tersinkronisasi atau belum, caranya dengan menggunakan perintah

Jika hasilnya seperti gambar dibawah atau ada kalimat sync maka server master dan slave sudah terkoneksi seperti nokia gan :v :v
Test phpPgAdmin

1. Kita lakukan pengetesan pada client dengan cara mengakses database via web dengan phpPgAdmin. Kemudian kita login dengan user yang ada

2. Kemudian untuk pengujiannya, kita akan membuat skema baru, caranya dengan klik Create schema

Lalu tentukan namanya terserah kalian, kemudian klik Create 

3. Sekarang, kita login ke server slave nya atau server replica nya, yaitu slave

Dan ternyata Sama gan :v database yang telah dibikin tadi dan menjadi replika di server slave
Cukup sekian dari saya :v kalau ada salah mohon dikomentar 
Wassalamualaikum wr.wb.


EmoticonEmoticon