Konsep Dasar
Replikasi database merupakan suatu metode atau teknik yang digunakan untuk menyalin dan mendistribusikan data dari satu database ke database yang lainnya. Kemudian database tersebut akan saling melakukan sinkronisasi antar database untuk menjaga konsistensi. Dengan adanya replikasi database ini, data dapat didistribusikan ke lokasi yang berbeda dan pengguna yang jauh melalui LAN, WAN, Dial-up Connection, wireless connections, dan internet.
Topologi
Konfigurasi Server Controller (Penambahan Domain)
1. Sebelum memulai melakukan konfigurasi replikasi database, terlebih dahulu kita buat domain atau identitas untuk server nodenya. Domain atau identitas tersebut digunakan untuk mengidentifikasi / sebagai identitas dari server nodenya. Untuk membuat domain untuk server node, lakukan editing pada file forward di server controller. Kemudian tambahkan identitas dengan nama node dan tambahkan juga ip address server nodenya.
2. Setelah melakukan editing pada file forward, lakukan juga editing pada file reverse. Kemudian tambahkan identitas untuk server nodenya.
3. Setelah selesai melakukan editing pada file forward dan reverse, agar domain atau identitas server node yang telah ditambahkan tadi dapat berjalan, maka lakukan restart pada named.
4. Kemudian cek domain atau identitas server node menggunakan perintah dig node.gilang.net. Maka akan muncul identitas server node pada question section dan answer section.
Konfigurasi Server Controller
1. Setelah melakukan konfigurasi domain, yang harus anda lakukan sekarang adalah mengedit file konfigurasi postgresql yaitu postgresql.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/ Terlebih dahulu buka file tersebut menggunakan editor nano atau vi.
Cari script listen_addresses kemudian uncommand (hilangkan tanda #) pada listen_addresses, setelah itu atur optionnya menjadi * agar semua host dapat mengakses postgresql.
Cari script wal_level kemudian uncommand (hilangkan tanda #) pada wal_level, setelah itu atur optionnya menjadi hot_standby.
Cari script synchronous_commit kemudian uncommand (hilangkan tanda #) pada synchronous_commit, dan ubah optionnya menjadi local.
Scroll kebawah atau cari script archive_mode dan archive_command, kemudian uncommand syntax archive_mode, kemudian atur optionnya menjadi on. Setelah itu uncommand juga pada syntax archive_command dan atur optionnya menjadi cp %p /var/opt/rh/rh-postgresql95/lib/pgsql/archive/%f.
Scroll kebawah lagi atau cari script max_wal_senders dan script max_keep_segments, kemudian uncommand syntax max_wal_sender. Max wal sender ini digunakan untuk menuntukan jumlah koneksi maksimum dari standby server. karna disini saya hanya mempunyai dua server, yaitu master dan slave, maka disini saya mengatur valuenya menjadi 2 (karena jumlah servernya ada 2). Kemudian uncommand juga pada baris wal_keep_segments. Wal keep segments ini merupakan besar logfile segments, satuannya MB. Pada contoh ini saya mengaturnya menjadi 10.
Masih dikonfigurasi file postgresql.conf, cari script synchronous_standby_names kemudian uncommand pada baris synchronous_standby_names, baris ini merupakan pendefinisian dari nama server standby manakah yang akan akan digunakan untuk Database Replication. Nama yang dimaksud yaitu berupa hostname. Disini yang kita jadikan sebagai replika adalah server node, maka kita masukkan hostname dari server node.
2. Setelah melakukan editing pada file postgresql.conf, sekarang kita lakukan editing pada file pg_hba.conf yang terletak di direktori /var/opt/rh/rh-postgresql95/lib/pgsql/data/ Terlebih dahulu buka file tersebut menggunakan editor nano atau vi.
Cari syntax yang sudah saya tandai pada gambar dibawah ini, kemudian uncommand setiap local host yang ada, lalu edit yang tadinya masih user postgres, ubah menjadi replica (kecuali pada local). Lakukan pengeditan pada ketiga host, 1 host dengan ip loopback, dan 2 sisanya merupakan ip address dari server master (controller) dan server slave (node), dan jangan lupa atur methodnya menjadi md5. Sedangkan pada baris local biarkan seperti default (peer).
2. Kemudian kita lakukan restart pada service postgresql agar file yang baru saja dikonfigurasi dapat berjalan. Aktifkan juga service postgresql.
3. Sekarang akses postgresql dengan masuk ke shell postgres kemudian buat user replikasinya beserta passwordnya.
Konfigurasi Server Node
1 Hal pertama yang harus kita lakukan adalah menonaktifkan terlebih dahulu service postgresql
[root@nodegilang ~]# systemctl stop rh-rhpostgresql95-postgresql
Kemudian pindah ke direktori /var/opt/rh/rh-postgresql95/lib/pgsql/data/ Setelah itu hapus semua file yang ada pada direktori /var/opt/rh/rh-postgresql95/lib/pgsql/data/ menggunakan command -rf * Lalu akses shell postgres dengan mengetikkan command su - postgres Setelah anda masuk ke shell postgres, lakukan sinkronisasi antara server master (controller) dan server slave (node). Kemudian anda akan diminta memasukkan password server node, masukkan password server node maka sinkronisasi yang dilakukan akan berhasil.
2. Selanjutnya, edit file postgresql.conf yang terletak di /var/opt/rh/rh-postgresql95/lib/pgsql/data/
[root@nodegilang ~]# nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf
Cari script wal_level kemudian uncommand (hilangkan tanda #) pada wal_level lalu atur optionnya menjadi on.
3. Setelah itu, kita copy file recovery.conf.sample yang ada pada direktori /opt/rh/rh-postgresql95/root/usr/share/pgsql/, kemudian ubah nama file tersebut menjadi recovery.conf.
4. Buka file recovery.conf hasil copy tadi menggunakan editor nano atau vi.
[root@nodegilang ~]# nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/recovery.conf
Lalu edit file recovery.conf tersebut. Cari script restore_command kemudian uncommand (hilangkan tanda #) pada script tersebut lalu atur optionnya menjadi scp 192.168.0.20:/var/opt/rh/rh-postgresql95/lib/pgsql/archive/%f %p. 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. Disini terdapat perintah scp (secure copy) dan diikuti oleh ip address 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 destinasi direktori yang telah ditentukan, Sedangkan maksud dari secure copy in adalah proses penyalinannya dilakukan secara secure, yaitu via ssh.
Cari script standby_mode kemudian uncommand (hilangkan tanda #) pada script tersebut lalu ubah optionnya menjadi on.
Cari script primary_conninfo kemudian uncommand (hilangkan tanda #) pada script tersebut, ubah optionnya menjadi host=192.168.0.20 port 5432 user=replica password=4sharedcom application_name=node. Primary_conninfo ini digunakan untuk menentukan string koneksi yang akan digunakan agar server standby terhubung dengan server primary (server master db). host=192.168.0.20 merupakan pendefinisan dari server primari.
port=5432 merupakan port yang digunakan postgresql untuk replikasi.
user=replica merupakan user replikasi.
password=4sharedcom merupakan password dari user replika.
application_name=node merupakan hostname dari server slave.
Pastikan service postgresql dan port 5432 telah ditambahkan pada firewall kedua server tersebut (server controller dan server node).
5. Setelah konfigurasi file telah selesai, sekarang jalankan dan aktifkan kembali service postgresql.
6. Kemudian akses postgresql lalu cek sinkronisasi antar server master dan server slave. Pastikan sudah tersinkronisasi dengan baik (ditandai dengan munculnya hostname server node).
Verifikasi
1. Lakukan pengetesan pada client dengan cara mengakses database menggunakan web browser dengan phpPgAdmin. Disini kita gunakan domain utama terlebih dahulu, ketikkan gilang.net/phpPgAdmin. Klik PostgreSQL kemudian masukkan username dan password yang telah anda buat lalu untuk melakukan login menuju database, klik Login.
2. Maka anda akan memasuki dashboard database. Disini kita coba membuat schemas. Klik Schemas kemudian masukkan nama schema yang ingin dibuat, pilih owner, lalu klik Create untuk membuat schemas. Disini saya membuat schemas dengan nama testing.
3. Maka schema akan terbuat.
4. Sekarang akses phpPgAdmin menggunakan domain server node pada client. Ketikkan node.gilang.net/phpPgAdmin. Lakukan login menggunakan username dan password yang anda buat.
5. Kemudian anda akan masuk kedalam dashboard database. Lihat schema, maka disana akan terdapat schema yang dibuat pada domain utama. Seperti itulah replikasi, jadi saat kita membuat database atau mengkonfigurasi database pada domain yang satu, maka domain lainnya (replika) akan melakukan sinkronisasi terhadap domain tersebut.
Demikianlah artikel pada kali ini jika terdapat kesalahan kata pada artikel yang anda baca, saya mohon maaf sebesar-besarnya. Jika anda masih kurang paham atau kurang mengerti akan artikel yang saya sampaikan, anda dapat mengetikkan keluhan anda melalui kolom komentar. Terima kasih.
Tidak ada komentar
Posting Komentar