Replikasi database adalah suatu proses dalam manajemen database yang bertujuan untuk membuat salinan atau duplikat yang nantinya dapat digunakan sebagai mirroring. Lalu, apa saja manfaat replikasi database dan bagaimana cara membuatnya?
Pada panduan ini, kami akan mengulas secara lengkap tentang apa itu replikasi database hingga cara membuatnya. Simak artikel ini sampai selesai.
Apa itu Replikasi Database?
Replikasi database adalah sistem yang digunakan untuk menyalin, mendistribusikan data, serta melakukan sinkronisasi data antar database. Replikasi database juga dapat membantu meningkatkan kinerja database dengan mempercepat waktu akses dan meminimalkan waktu downtime yang mungkin terjadi jika hanya ada satu database tunggal.
Pada dasarnya sistem replikasi membutuhkan minimal dua buah server untuk digunakan sebagai master dan slave. Dengan menggunakan teknik replikasi, data dapat didistribusikan ke server yang berbeda melalui koneksi jaringan lokal maupun internet.
Selain itu ada yang menyebutkan bahwa Replikasi adalah proses menyalin dan memelihara objek database dalam beberapa database yang membentuk suatu sistem database terdistribusi. Replikasi database dapat meningkatkan kinerja dan melindungi ketersediaan aplikasi karena data pilihan alternatif akses (cadangan) ada.
Sebagai contoh, sebuah aplikasi biasanya dapat mengakses database, aplikasi akan dapat terus berfungsi jika server lokal mengalami kegagalan/down, karena terdapat server database replikasi lain yang tetap berjalan dan berisi data yang sama sebagai backup apabila server utama mengalami down.
Manfaat Replikasi Database
Ada beberapa manfaat dari replikasi database, berikut diantaranya;
- Replikasi database memungkinkan pengguna untuk memiliki akses ke data yang disinkronkan di berbagai lokasi geografis, termasuk yang terdekat dengan mereka.
- Dapat meningkatkan kinerja read/write dengan mengizinkan beberapa sistem akses, Replikasi basis data menjadikan data lebih andal, tahan lama, dan sistem data lebih tangguh.
- Sebagai rencana pemulihan bencana data karena banyak salinan data dapat dibuat dan disimpan di lokasi yang berbeda, termasuk di berbagai platform cloud dan Server cadangan.
Pentingnya Replikasi Database
Berdasarkan manfaat di atas, replikasi database penting untuk dilakukan pada kondisi berikut ini;
1. Ketersediaan data tinggi
Replikasi memastikan bahwa kita memiliki data yang tersedia untuk pengguna setiap saat. Bahkan ketika masalah muncul dengan salah satu database yang direplikasi, seperti down pada Server database utama, maka pengguna masih dapat mengakses salinan database yang ditemukan di lokasi server lain.
2. Pengurangan beban server
Database yang direplikasi dan terdistribusi membutuhkan lebih sedikit daya pemrosesan untuk setiap server karena data sedang diproses dan dihosting di beberapa server.
Distribusi pemrosesan dan penyimpanan ini mengarah pada pengurangan beban pada server dibandingkan dengan satu server yang menangani beban dan mengalami masalah kinerja.
3. Latensi lebih rendah
Performa server ditingkatkan karena salinan data ditemukan di beberapa lokasi. Ini mengurangi waktu bolak-balik untuk mengambil data karena akan mengambil data dari replika yang lebih dekat dari pengguna.
4. Data yang lebih andal dan akurat
Dengan adanya replikasi basis data, data terus diproses dan diperbarui agar sesuai dengan data sumber, meningkatkan integritas dan keandalan data.
5. Pemulihan bencana
Replikasi basis data memiliki efek positif pada pemulihan dan ketahanan data. Versi data terbaru dapat diambil dalam situasi di mana server tertentu rusak untuk menghindari kehilangan data dan sebagai langkah antisipasi bencana.
Model Replikasi Database
Setidaknya ada 2 model replikasi database yang bisa kita lakukan, berikut keterangannya.
- Master-Slave: Jika terjadi perubahan database pada Master, database pada Slave juga ikut berubah. Namun, jika terjadi perubahan pada Slave, Master tidak terpengaruh.
- Master-Master: Semua server bertindak sebagai Master dan Slave. Karena jika terjadi perubahan database di salah satu server, database pada server lain juga ikut berubah.
Pada percobaan replikasi ini kita akan menggunakan model replikasi Master-Slave.
Cara Membuat Replikasi Database di MariaDB
Pada demo kali ini, kami akan membuat replikasi database dengan spesifikasi server sebagai berikut:
- Distro: Ubuntu 20.04 LTS
- Paket VPS : Minimal Paket M (informasi paket VPS murah)
- MariaDB: 10.3.31
- IP Master: 203.175.8.224
- IP Slave: 203.175.8.223
Pastikan sebelum mengikuti panduan berikut, dua server Anda telah siap digunakan untuk replikasi database.
Konfigurasi Server MariaDB pada server Master
- Install MariaDB.
apt install mariadb-server mariadb-client -y
- Ubah konfigurasi pada conf mariadb.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
# baris 29, tambah IP bind-address dengan IP server
bind-address = 127.0.0.1
bind-address = 203.175.8.224
# pada baris 74, lepas comment
server-id = 1
# pada baris 75, lepas comment
log_bin = /var/log/mysql/mysql-bin.log
- restart service mariadb.
systemctl restart mariadb
- setelah melakukan restart, kita dapat membuat user database yang nantinya digunakan untuk replikasi.
# mysql -u root -p
# GRANT REPLICATION SLAVE ON . TO 'mirror'@'203.175.8.223' IDENTIFIED BY 'password';
# FLUSH PRIVILEGES;
# FLUSH TABLES WITH READ LOCK;
- kita akan menampilkan informasi replika master yang digunakan untuk server slave.
SHOW MASTER STATUS;
- diatas adalah informasi position dan log yang akan kita binding pada server slave.
Konfigurasi Server MariaDB pada server Slave
- Install MariaDB.
apt install mariadb-server mariadb-client -y
- Ubah konfigurasi pada conf mariadb.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
# baris 29, tambah IP bind-address dengan IP server
bind-address = 127.0.0.1
bind-address = 203.175.8.223
# pada baris 74, ubah ke id lainnya (selain 1)
server-id = 2
# pada baris 75, lepas comment
log_bin = /var/log/mysql/mysql-bin.log
- Melakukan koneksi database ke master, pastikan diisi sesuai dengan informasi pada server Master sebelumnya.
mysql -u root -p
CHANGE MASTER TO
MASTER_HOST='203.175.8.224',
MASTER_USER='mirror',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=852;
(enter)
START SLAVE;
UNLOCK TABLES;
- restart service mariadb
systemctl restart mariadb
- apabila sudah terkonfigurasi, pastikan slave sql berjalan dan posisi sesuai dengan menjalankan perintah berikut :
SHOW SLAVE STATUS \G
- maka akan tampil informasi master;
Pengujian
Lakukan pembuatan database, pembuatan tabel, CRUD record pada server Master.
Setiap selesai menjalankan satu perintah pada server Master periksa server Slave apakah ada terjadi hal yang sama pada server Master.
Contoh : kita akan membuat database bernama ‘coba’ di server master, maka database coba akan otomatis copy pada server slave
Database Master
Database Slave
Apabila terdapat kendala, pastikan untuk port 3306 dapat diakses oleh masing-masing server dengan melakukan konfigurasi pada firewall.