Replikasi Database merupakan cara yang digunakan untuk menggandakan perubahan data yang terjadi pada Database Server (dalam hal ini MariaDB) untuk menghindari atau meminimalisir kehilangan data akibat kerusakan fisik.
1. Instalasi MariaDB Server dan Initial Setup
Pertama silahkan lakukan instalasi MariaDB Server pada kedua Server, pada Distro Ubuntu/Debian teman-teman dapat menginstallnya dengan perintah:
~# apt install mariadb-server
Setelah instalasi, silahkan teman-teman lakukan Initial Setup MariaDB nya dengan mengetikkan perintah berikut dan pilih Yes saja ketika diberikan pertanyaan Y/n.
~# mysql_secure_installation
2. Â Konfigurasi Binary Logging, Server ID, dan Bind Address pada MariaDB Master
Setelah dilakukan Initial Setup pada kedua server, silahkan login menuju ke Server MariaDB yang akan dijadikan sebagai Master Database.
Hal yang akan kita konfigurasi berada di file /etc/mysql/my.conf untuk Distro Debian dan /etc/mysql/mariadb.conf.d/50-server.conf untuk Distro Ubuntu.
Untuk mengkonfigurasi Binding Address, silahkan teman-teman cari bind_address. Pastikan konfigurasi tersebut dalam kondisi terdapat “comment” atau tanda pagar didepannya, atau Bind Addressnya diset ke 0.0.0.0. Ini diperlukan agar Slave dapat berkomunikasi nantinya.
Kemudian pada section konfigurasi [mysqld] kita tambahkan:
# Mengaktifkan Binary Logging
log-bin
# Memberikan ID Server
server-id = <integer value>
Integer Value silahkan diganti dengan Angka.
Apabila sudah silahkan teman-teman simpan dan restart MariaDB nya.
~# service mysql restart
Kemudian cek apakah Binary Logging sudah aktif ataukah belum dengan:
~# mysqld –verbose –help | grep log-bin
Lalu cek Server ID nya, apakah telah sesuai dengan:
~# mysqld –verbose –help | grep server-id
3. Buat Starting Database dan Akun Khusus Replikasi
Kita akan membuat sebuah database untuk permulaan replikasi. Untuk replikasi, kita membutuhkan satu database sebagai starting point nya. Meski setelah selesai melakukan konfigurasi, database yang bisa direplikasi adalah seluruhnya.
~# mysql -u root -p~# MariaDB [(none)] create database <nama database>;
Kemudian kita buat akun khusus yang akan menangani proses replikasinya.
;; Akun Replikasi untuk Semua Database
~# MariaDB [(none)] grant super, reload, replication slave on *.* to ‘username’@’%’ identified by ‘passwordku’;
;; Akun Replikasi untuk Database Spesifik
~# MariaDB [(none)] grant super, reload, replication slave on <nama database>.* to ‘username’@’%’ identified by ‘passwordku’;
4. Freeze Database Master dan Buat Snapshot
Untuk mensinkronkan database dari Master ke Slave kita perlu melakukan pembekuan sementara pada Database Master untuk memastikan Database yang akan dimuat oleh Slave benar-benar sama dengan yang ada di Master.
;; Membekukan Database
~# MariaDB [(none)] flush tables with read lock;
Apa itu Flush Tables with Read Lock? silahkan baca selengkapnya disini.
;; Menampilkan Status Posisi Database Master
~# MariaDB [(none)] show master status;
Mohon untuk mencatat Nama File serta Posisi nya. Kedua hal ini dibutuhkan ketika kita mengkonfigurasi MariaDB Slave nantinya.
Selanjutnya kita buat Snapshot untuk Database yang sudah kita buat sebelumnya.
~# tar cjvf /home/fajar/snapshotmaster.tar.bz2 /var/lib/mysql/<nama database>
5. Kirim Arsip Snapshot ke Server MariaDB Slave
Kita kirimkan arsip snapshot yang sudah kita buat ke Server MariaDB Slave, disini saya akan menggunakan Tool scp untuk melakukan transfer data. Apabila menggunakan scp pastikan di server remote sudah terinstall SSH Server.
~/home/fajar# scp snapshotmaster.tar.bz2 fajar@192.168.101.4:/home/fajar
6. Konfigurasi Server ID pada MariaDB Slave
Selanjutnya kita akan konfigurasi MariaDB Slave nya. Silahkan teman-teman login ke server tersebut. Kita akan menambahkan Server ID pada Konfigurasi MariaDB nya.
;; untuk Debian
~# nano /etc/mysql/my.conf
;; untuk Ubuntu
~# nano /etc/mysql/mariadb.conf.d/50-server.conf
Tambahkan konfigurasi server-id didalam section [mysqld].
server-id = <integer-value>
Berikan value yang berbeda dengan Server ID milik Master.
Kemudian kita restart dan cek apakah Server ID sudah benar atau belum.
~# mysqld –verbose –help | grep server-id
7. Arahkan MariaDB Slave ke MariaDB Master
Kita arahkan MariaDB Slave agar terkoneksi dan melisten ke MariaDB Master dengan melakukan query:
;; Set Info Master
~# MariaDB [(none)] CHANGE MASTER TO MASTER_HOST=’ipmariadbmaster’, MASTER_USER=’usernamereplikasi’, MASTER_PASSWORD=’passwordku’, MASTER_LOG_FILE=’mysqld-bin.xxxxxx’, MASTER_LOG_POS=<posisi_log_master>;
;; Menghidupkan Slave Mode
~# MariaDB [(none)] start slave;
Lalu cek apakah Slave sudah terkoneksi ke Master dengan:
~# MariaDB [(none)] show slave status \G;
Apabila Statusnya adalah Waiting for master to send event. Maka Slave siap digunakan, apabila selain pesan tersebut maka silahkan teman-teman cek kembali apakah ada yang salah dengan konfigurasinya atau tidak.
8. Unfreeze Database Master
Agar Database dapat digunakan kembali, kita perlu menghapus status penguncian yang kita lakukan sebelumnya. Silahkan teman-teman login ke CLI MariaDB Master dan ketikkan perintah:
~# MariaDB [(none)] unlock tables;
9. Replikasi Selesai!
Konfigurasi untuk replikasi antar 2 Database Server MariaDB sudah selesai, teman-teman dapat mencoba untuk melakukan pengubahan disisi Master dan hasilnya Slave akan mengikuti perubahan tersebut 🙂
h. Referensi
– MariaDB Knowledge Base – Setting Up Replication
– HowtoForge – Replicating a master database using MariaDB 10 on Debian 8
– Percona Database Performance Blog – How fast is Flush Tables with Read Lock?
sumber : https://penguinstunnel.blogspot.com/2017/03/langkah-mengkonfigurasi-2-mariadb.html