بسم الله الرحمن الرحيم
Assalamu'alaikum, kali ini saya akan berbagi ilmu tentang cara 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. 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 dibuatnya Database Replication ini 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.
1. Edit file konfigurasi postgresql yaitu postgresql.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/
2. Uncomment wal_level, setelah itu atur optionnya menjadi hot_standby. Kemudian Uncomment juga pada synchronous_type, dan ubah optionnya menjadi local
#Ket :
Pada database, Commit digunakan untuk menandai perubahan database secara permanen. Perintah mengakhiri transaksi terkini dan membuat setiap perubahan selama transaksi tersebut menjadi permanen. Sampai kita melakukan commit terhadap perubahan, pengguna-pengguna lain tidak dapat mengakses data yang telah berubah tersebut, mereka melihat data sama seperti sebelum kita melakukan perubahan.
Ketika kita mengatur synchronous_commit = local, Commit menunggu sampai catatan transaksi diputar ke disk lokal
Balik lagi ke point konfigurasi, sekarang kita edit file tersebut
3. Cari serta uncomment syntak archive_mode, kemudian atur optionnya menjadi on. Setelah itu uncomment syntak archive_command dan atur optionnya menjadi command atau perintah yang digunakan untuk pengarsipan
#Ket :
4. 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 sata mengatur valuenya menjadi 2. Kemudian uncomment juga oada baris wal_keep_segments. Wal keep segments ini merupakan besar logfile segments, satuannya MB. Pada contoh ini saya mengaturnya menjadi 10
5. Masih dikonfigurasi file postgresql.conf, cari dan uncomment pada baris synchronous_standby_names, baris ini merupakan pendefinisian dari nama server standby manakah yang akan digunakan untuk Database Replication. Nama yang dimaksud yaitu berupa hostname
6. Edit file pg_hba.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/
7. Cari syntak yang sudah saya tandai pada gambar dibawah ini, Uncomment setiap local host yang ada, kemudian edit yang tadinya masih user pogtres, ubah menjadi replica, karna nanti pada tahap selanjutnya kita akan membuat user replica. Lakukan pengeditan pada ketiga host, 1 host dengan ip loopback, dan 2 sisanya merupakan ip dari sever master maupun slave (server db dan server db replica), dan jangan lupa ketiganya atur methodnya menjadi md5. Sedangkan pada baris local biarkan seperti default, cukup ganti nama user serta uncomment syntaknya saja
8. Restart service postgresql
9. Masuk ke shell postgres
10. Buat user replica beserta passwordnya
1. Pertama, stop terlebih dahulu service postgresql
2. Kemudian remove semuaaaa file yang ada pada directory /var/opt/rh/rh-postgresql95/lib/pgsql/data/
3. Masuk ke shel postgresql, kemudian lakukan sinkronisasi dari server node1 ini ke server master database
#Ket :
4. Keluar dari shell postgres
5. Edit file konfigurasi postgresql yaitu postgresql.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/
6. Masih ingatkan tadi pada server master db, syntak wal_level kita atur menjadi hot_standby, maka dari itu pada server slave ini kita harus menyalakan hot_standbynya dengan cara uncomment pada baris tersebut, kemudian atur optionnya menjadi on
7. Copy file recovery.conf.sample, kemudian ubah nama file tersebut menjadi recovery.conf
8. Edit file recovery.conf yang telah ter-copy tadi
9. Cari dan uncomment syntak restore_command. 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, via ssh
10. Scroll kebawah, hidupkan Standby mode pada slave dengan cara uncomment pada baris standby_mode 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.
11. Masih di file recovery.conf, 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 ini
#Ket :
Sebelumnya pastikan port 5432 atau service postgresql sudah diizinkan pada firewall kedua server
12. Karna tadi service postgresqlnya dimatikan, maka dari itu sekarang kita harus menjalankannya kembali
2. Disini saya membuat user baru beserta database dan passwordnya.
#Catatan :
2. Untuk pengujian, kita coba buat database
3. Pastikan database berhasil terbuat
4. Sekarang login ke server slavenya, atau server replikanya, yaitu node1
5. Lakukan pengecekan apakah databasenya juga terdapat pada node1?
Sekian dari saya, mohon kritik dan sarannya
Wassalamu'alaikum
Tujuan dibuatnya Database Replication ini 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.
Topologi
Konfigurasi Server Database
#Requirement :
- Install Apache / Nginx (untuk web servernya)
1. Edit file konfigurasi postgresql yaitu postgresql.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/
2. Uncomment wal_level, setelah itu atur optionnya menjadi hot_standby. Kemudian Uncomment juga pada synchronous_type, dan ubah optionnya menjadi local
#Ket :
- 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)
Pada database, Commit digunakan untuk menandai perubahan database secara permanen. Perintah mengakhiri transaksi terkini dan membuat setiap perubahan selama transaksi tersebut menjadi permanen. Sampai kita melakukan commit terhadap perubahan, pengguna-pengguna lain tidak dapat mengakses data yang telah berubah tersebut, mereka melihat data sama seperti sebelum kita melakukan perubahan.
Ketika kita mengatur synchronous_commit = local, Commit menunggu sampai catatan transaksi diputar ke disk lokal
Balik lagi ke point konfigurasi, sekarang kita edit file tersebut
3. Cari serta uncomment syntak archive_mode, kemudian atur optionnya menjadi on. Setelah itu uncomment syntak archive_command dan atur optionnya menjadi command atau perintah yang digunakan untuk pengarsipan
#Ket :
- archive mode : opsi yang digunakan sebagai pengaturan mode arsip, Ketika archive_mode diaktifkan (on), WAL segmen dikirim ke penyimpanan arsip dengan mengatur archive_command. archive_mode tidak dapat diaktifkan saat wal_level disetel menjadi minimal
- archive command : command yang digunakan untuk mengarsip logfile segmen
- %p : dalam string digantikan oleh nama path dari file yang akan diarsipkan
- %f : diganti hanya dengan nama file
4. 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 sata mengatur valuenya menjadi 2. Kemudian uncomment juga oada baris wal_keep_segments. Wal keep segments ini merupakan besar logfile segments, satuannya MB. Pada contoh ini saya mengaturnya menjadi 10
5. Masih dikonfigurasi file postgresql.conf, cari dan uncomment pada baris synchronous_standby_names, baris ini merupakan pendefinisian dari nama server standby manakah yang akan digunakan untuk Database Replication. Nama yang dimaksud yaitu berupa hostname
6. Edit file pg_hba.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/
7. Cari syntak yang sudah saya tandai pada gambar dibawah ini, Uncomment setiap local host yang ada, kemudian edit yang tadinya masih user pogtres, ubah menjadi replica, karna nanti pada tahap selanjutnya kita akan membuat user replica. Lakukan pengeditan pada ketiga host, 1 host dengan ip loopback, dan 2 sisanya merupakan ip dari sever master maupun slave (server db dan server db replica), dan jangan lupa ketiganya atur methodnya menjadi md5. Sedangkan pada baris local biarkan seperti default, cukup ganti nama user serta uncomment syntaknya saja
8. Restart service postgresql
9. Masuk ke shell postgres
10. Buat user replica beserta passwordnya
Konfigurasi Server Replica
#Requirement :
- Install Apache / Nginx (untuk web servernya)
1. Pertama, stop terlebih dahulu service postgresql
2. Kemudian remove semuaaaa file yang ada pada directory /var/opt/rh/rh-postgresql95/lib/pgsql/data/
3. Masuk ke shel postgresql, kemudian lakukan sinkronisasi dari server node1 ini ke server master database
#Ket :
- 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.0.108 : pendifisian bahwa base bacup cluster database berasal dari host 192.168.0.108 (ip server master db)
- -U : pendifisian dari user, pada contoh ini usernya yaitu replica
- -D /var/opt/rh/rh-postgresql95/lib/pgsql/data/ : pendefinisan pada Directory mana file backup cluster database tersebut
- -P : pendifinisian dari Password
- --xlog : untuk membuat catatan terhadap semua log yang dihasilkan selama backup
4. Keluar dari shell postgres
5. Edit file konfigurasi postgresql yaitu postgresql.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/
6. Masih ingatkan tadi pada server master db, syntak wal_level kita atur menjadi hot_standby, maka dari itu pada server slave ini kita harus menyalakan hot_standbynya dengan cara uncomment pada baris tersebut, kemudian atur optionnya menjadi on
7. Copy file recovery.conf.sample, kemudian ubah nama file tersebut menjadi recovery.conf
8. Edit file recovery.conf yang telah ter-copy tadi
9. Cari dan uncomment syntak restore_command. 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, via ssh
10. Scroll kebawah, hidupkan Standby mode pada slave dengan cara uncomment pada baris standby_mode 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.
11. Masih di file recovery.conf, 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 ini
#Ket :
- host=192.168.0.108 : pendefinisan dari server primary
- port=5432 : port yang digunakan postgresql
- user=replica : user replikasi
- passwd=1234 : password dari user replika
- application_name=wisnu-replication : hostname dari server master db
Sebelumnya pastikan port 5432 atau service postgresql sudah diizinkan pada firewall kedua server
12. Karna tadi service postgresqlnya dimatikan, maka dari itu sekarang kita harus menjalankannya kembali
Reconfigure Server Database
1. Masuk ke shell postgres, setelah itu lakukan pengecekan si server master dengan slave sudah berhasil tersinkronisasi atau belum2. Disini saya membuat user baru beserta database dan passwordnya.
#Catatan :
Jika anda membuat user, buatlah user dengan akses superuser, karena user biasa tidak bisa membuat database
Verify
1. Kita coba lakukan pengetesan pada client dengan cara mengakses database via web dengan phpPgAdmin. Login dengan user yang ada2. Untuk pengujian, kita coba buat database
3. Pastikan database berhasil terbuat
4. Sekarang login ke server slavenya, atau server replikanya, yaitu node1
5. Lakukan pengecekan apakah databasenya juga terdapat pada node1?
Sekian dari saya, mohon kritik dan sarannya
Wassalamu'alaikum
Tidak ada komentar:
Posting Komentar
Silahkan Komentarnya ^^