Langkah Mengkonfigurasi Dua MariaDB Server untuk Replikasi Master-Slave
Assalamu'alaikum Wr. Wb.
i. Kesimpulan
Dengan menggunakan cara Replikasi, kita bisa meminimalisir kehilangan database karena kerusakan Hardware. Replikasi akan terus mengikuti perubahan data yang dilakukan pada Master Server sesuai dengan konfigurasi yang diberikan. Karena Replikasi bersifat Realtime, kita dapat mengkombinasikannya untuk membuat Redundancy Database Server.
Di artikel ini saya akan menuliskan mengenai Langkah-langkah Mengkonfigurasi Dua MariaDB Server untuk tujuan Replikasi Database dengan Pengaturan 1 Master dan 1 Slave. Konfigurasi ini termasuk dalam Program Kerja kami SMK Negeri 1 Pedan dan SMK Negeri 1 Sawit dengan Waktu Pelaksanaan 20 Maret - 25 Maret 2017.
a. Pengertian
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.
b. Latar Belakang
Konfigurasi ini didasari atas keinginan kami untuk membuat suatu konfigurasi Web Service tanpa adanya gangguan Single Point Failure yang diakibatkan karena salah satu Server mengalami gangguan atau down.
c. Maksud dan Tujuan
Konfigurasi Replikasi Database ini bertujuan untuk mengantisipasi Gangguan yang terjadi pada Server itu sendiri maupun gangguan dalam jaringan yang mengakibatkan tidak berfungsinya layanan.
d. Waktu Pelaksanaan
Waktu yang dibutuhkan untuk melakukan konfigurasi ini kurang lebih 10-15 Menit.
e. Alat dan Bahan
- PC
- 2 Buah Server untuk MariaDB yang saling terkoneksi
f. Topologi
g. Langkah Pengerjan
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:
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:
Apabila sudah silahkan teman-teman simpan dan restart MariaDB nya.
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.
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.
Selanjutnya kita buat Snapshot untuk Database yang sudah kita buat sebelumnya.
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.
Selanjutnya kita akan konfigurasi MariaDB Slave nya. Silahkan teman-teman login ke server tersebut. Kita akan menambahkan Server ID pada Konfigurasi MariaDB nya.
Kemudian kita restart dan cek apakah Server ID sudah benar atau belum.
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-serverSetelah instalasi, silahkan teman-teman lakukan Initial Setup MariaDB nya dengan mengetikkan perintah berikut dan pilih Yes saja ketika diberikan pertanyaan Y/n.
~# mysql_secure_installation2. 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 LoggingInteger Value silahkan diganti dengan Angka.
log-bin
# Memberikan ID Server
server-id = <integer value>
Apabila sudah silahkan teman-teman simpan dan restart MariaDB nya.
~# service mysql restartKemudian cek apakah Binary Logging sudah aktif ataukah belum dengan:
~# mysqld --verbose --help | grep log-binLalu cek Server ID nya, apakah telah sesuai dengan:
~# mysqld --verbose --help | grep server-id
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 Database4. Freeze Database Master dan Buat Snapshot
~# 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';
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 DatabaseApa itu Flush Tables with Read Lock? silahkan baca selengkapnya disini.
~# MariaDB [(none)] flush tables with read lock;
;; Menampilkan Status Posisi Database MasterMohon untuk mencatat Nama File serta Posisi nya. Kedua hal ini dibutuhkan ketika kita mengkonfigurasi MariaDB Slave nantinya.
~# MariaDB [(none)] show master status;
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/fajar6. 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 DebianTambahkan konfigurasi server-id didalam section [mysqld].
~# nano /etc/mysql/my.conf
;; untuk Ubuntu
~# nano /etc/mysql/mariadb.conf.d/50-server.conf
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:
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:
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:
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
~# 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
i. Kesimpulan
Dengan menggunakan cara Replikasi, kita bisa meminimalisir kehilangan database karena kerusakan Hardware. Replikasi akan terus mengikuti perubahan data yang dilakukan pada Master Server sesuai dengan konfigurasi yang diberikan. Karena Replikasi bersifat Realtime, kita dapat mengkombinasikannya untuk membuat Redundancy Database Server.
Cukup sekian yang dapat saya tulis, semoga bermanfaat bagi teman-teman semuanya!
Dan seperti biasa, Terima Kasih!
Wassalamu'alaikum Wr. Wb.
Dan seperti biasa, Terima Kasih!
Wassalamu'alaikum Wr. Wb.