Setup Replikasi Database Master-Slave di MariaDB

Setup Replikasi Database Master-Slave di MariaDB. MariaDB menyediakan beberapa tipe replikasi antara lain adalah master-slave, master-master, multi-source. Nah yang akan kita bahas disini adalah replikasi master-slave dimana kita melakukan mirror database dari satu server ke server database yang lain.

Replikasi tipe ini adalah replikasi "satu arah" dimana perubahan pada database master akan dikirim ke database slave, namun tidak sebaliknya.

Replikasi pada MariaDB sendiri berdasarkan pada binary log (binlog). Kalian harus mengaktifkannya di database master, sementara di database slave ini tidak diwajibkan namun sangat dianjurkan.

Oke, di tutorial ini saya menggunakan dua server untuk master dan slave dengan informasi berikut:
  • Master Database: 172.17.0.2
  • Slave Database: 172.17.0.3

Di kedua server tersebut sudah terinstall MariaDB. Jika belum, kalian bisa install menggunakan cara berikut:
Cara Install MariaDB di Ubuntu dan Debian Server

Konfigurasi di Master Database
Pertama, edit file konfigurasi mariadb.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Ubah IP pada baris bind-address dan ganti ke IP server master DB. Dalam contoh ini berarti saya ubah baris tersebut menjadi:
bind-address = 172.17.0.2
Selanjutnya hapus comment (tanda #) pada baris server-id.
server-id = 1
Hapus juga comment pada baris log_bin.
log_bin = /var/log/mysql/mysql-bin.log
Simpan perubahan tersebut dan restart mariadb.
sudo service mysql restart

Lanjut, login ke MariaDB di server Master Database
mysql -u root -p
Buat user baru di MariaDB khusus untuk replikasi.
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'172.17.0.3' IDENTIFIED BY 'p4ssw0rd';
FLUSH PRIVILEGES;
Disini saya memberi hak akses replikasi ke seluruh database yang ada di master. Untuk user, password kalian sesuaikan sendiri. Untuk IP yang ada disitu adalah IP dari server Slave Database yang artinya kita hanya mengijinkan user slave diakses secara remote dari IP tersebut.

Selanjutnya kita cek status master dengan perintah
show master status;

Nantinya kita membutuhkan nama File dan juga Position diatas.

Konfigurasi di Slave Database
Sama seperti di master database, ubah konfigurasi MariaDB
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Ubah IP pada baris bind-address dan ganti ke IP server slave DB. Dalam contoh ini berarti saya ubah baris tersebut menjadi:
bind-address = 172.17.0.3
Selanjutnya hapus comment (tanda #) pada baris server-id. Namun ubah nilainya menjadi 2. Intinya nilai tersebut tidak boleh sama antara master dan slave.
server-id = 2
Hapus juga comment pada baris log_bin.
log_bin = /var/log/mysql/mysql-bin.log
Simpan perubahan tersebut dan restart mariadb.
sudo service mysql restart
Login ke MariaDB menggunakan user root
mysql -u root -p
Lalu atur koneksi ke database master.
change master to
master_host='172.17.0.2',
master_user='slave',
master_password='p4ssw0rd',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=649;
Sesuaikan sendiri untuk user, password, dll. master_log_file dan master_log_pos samakan dengan output pada perintah show master status; di server database master.
Selanjutnya jalankan slave dengan command
start slave;
Untuk melihat status slave bisa gunakan perintah
show slave status\G;

Pengujian
Untuk pengujian, kalian bisa coba membuat database di server master.

Maka di server slave juga akan terupdate secare otomatis.

Oke mungkin sekian dulu tutorial singkat kali ini, semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.