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.