[CentOS 7] [9.6] MariaDB Database Replication

MariaDB Database Replication



Assalamu'alaikum Wr Wb

Bertermu lagi dengan saya Dimas Trihandika selaku Admin dari blog ini.

Pada lab 9.6 ini saya akan membahasa tutorial Konfigurasi Database Replication dengan menggunakan MariaDB

Apa itu Database Replication

Database Replication adalah suatu metode  yang digunakan untuk menyalin dan mendistribusikan data dari satu database ke database yang lain. Dan selanjutnya, mensinkronisasikan antar database, sehingga konsistensi data dapat terjamin. Database Replication dapat digunakan pada banyak sistem manajemen Daatabase, yang dimana proses ini terbentuk dari hasil sikronisasi antara  master dengan slave, atau antara yang asli dan salinannya, yang tentunya memerlukan beberapa konfigurasi tambahan agar Replication ini dapat bekerja. Dengan menggunakan teknik replikasi ini, data dapat didistribusikan ke lokasi yang berbeda melalui koneksi jaringan lokal maupun internet

Tujuan dibuatnya Database Replication ini adalah agar bersifat redudant, ketika salah satu server mati maka akan masih ada pengganti lainnya. Selain itu, Database Replication ini digunakan sebagai backup dari suatu database untuk mengantisipasi kehilangan data akibat serangan DOS ataupun faktor lainnya

Topology



Langkah konfigurasi :

Konfigurasi Server Master DB


1) Edit file konfigurasi mariadb, yaitu mariadb-server.cnf yang terletak di /etc/opt/rh/rh-mariadb101/my.cnf.d/
nano /etc/opt/rh/rh-mariadb101/my.cnf.d/mariadb-server.cnf

2) Cari baris [mysqld] kemudian tambahkan syntak seperti yang sudah saya tandai warna biru pada gambar dibawah ini

  • log-bin=mysql-bin merupakan binary logging sql, yaitu mysql.bin
  • server-id=1 merupakan penamaan saja untuk si server, ini tidak bisa menggunakan kata-kata atau kalimat, hanya berlaku untuk angka. Pada contoh ini saya mengaturnya menjadi angka 1


3) Restart service mariadb agar konfigurasi yang baru berjalan
systemctl restart rh-mariadn101-mariadb

4) Masuk ke shell mariadb
mysql -u root -p

5) Matikan mode slave pada master
stop slave;

6) Buat user replication beserta passwordnya
grant replication slave on *.* to namauser@'%' identified by 'password';

7) Jalankan perintah flush privileges;. Flush Privileges adalah sinonim untuk reload. Perintah reload menyuruh server untuk membaca ulang tabel hak akses.


8) Keluar dari shell mysql
exit

9) Masukan service mariadb kedalam firewall kemudian reload
firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload 

Konfigurasi Server Slave (Replica)


1) Edit file konfigurasi mariadb, yaitu mariadb-server.cnf yang terletak di /etc/opt/rh/rh-mariadb101/my.cnf.d/
nano /etc/opt/rh/rh-mariadb101/my.cnf.d/mariadb-server.cnf

2) Cari baris [mysqld] kemudian tambahkan syntak seperti yang sudah saya tandai warna biru pada gambar dibawah ini

  • log-bin=mysql-bin merupakan binary logging mysql, yaitu mysql.bin
  • server-id=1 merupakan penamaan saja untuk si server, ini tidak bisa menggunakan kata-kata atau kalimat, hanya berlaku untuk angka. Pada contoh ini saya mengaturnya menjadi angka 2. Dan ingat ini harus dibedain id nya, jangan sama kaya server master
  • read_only=1, karena diatur menjadi 1, ini berarti tidak ada pembaruan yang diizinkan kecuali dari pengguna dengan hak superuser atau server slave yang diperbarui dari master. Variabel read_only berguna bagi server slave untuk memastikan tidak ada pembaruan yang sengaja dilakukan di luar apa yang dilakukan pada master.
  • report-host=node1.dimas.name merupakan host dari server slave itu sendiri, bisa kalian atur menjadi nama domain, hostname, atau ip address server slave kalian


3) Restart service mariadb agar konfigurasi yang baru berjalan
systemctl restart rh-mariadb101-mariadb

4) Masukan service mariadb kedalam firewall kemudian reload
firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload 

Konfigurasi Server Master DB


 1) masuk ke shell mariadb
mysql -u root -p

2) Lakukan flush terhadap semua tables yang terbuka. Tabel baru hanya diperbolehkan dibuka dengan read lock sampai perintah unlock tables; dijalankan
flush tables with read lock;

3) Kemudian lihat informasi status tentang binary log files pada master, yang dimana informasi ini akan digunakan dan dicocokan pada server slave nanti
show master status;

4) Lakukan perintah mysqldump, Mysqldump ini adalah bagian dari paket database relasional mysql yang memungkinkan Anda untuk "dump" database, atau kumpulan database, untuk backup atau transfer ke server SQL lain.

  • --all-databases digunakan untuk Dump semua tabel di semua database
  • --lock-all-tables digunakan untuk Mengunci semua tabel di semua database
  • --events digunakan untuk Dump events terhadap database yang di dump
  • mysql_dump.sql adalah file yang terbuat dari proses mysqldump.


5) Masuk ke shell mariadb
mysql -u root -p

6) Jalankan perintah unlock tables;. Penggunaan unlock tables ini yaitu untuk melepas global (semua) read lock yang diperoleh pada perintah flush tables with read lock;
unlock tables

7) Keluar dari shell mariadb
exit

8) Copy file mysql_dump.sql yang telah terbuat tadi  ke host server slave menggunakan perintah scp. Scp ini adalah secure copy, yang dimana proses kirim ini melalui enkripsi seperti ssh. Pada contoh ini saya akan mengcopynya ke directory /tmp/ pada slave
scp mysql_dump.sql "slave host":"file destination"

Konfigurasi Server Slave (Replica)


1) Masukan file mysql_dump.sql yang telah tercopy tadi kedalam sql server slave. Hal ini dilakukan agar file dump pada slave sama dengan yang ada pada master, jadi nanti bisa tersinkronisasi.
mysql -u root -p < "letak file mysql_dump.sql"

2) Masuk ke shell mariadb
mysql -u root -p

3) Kemudian lakukan join pada server slave ke server master

  • change master to merupakan opsi untuk mangatur parameter yang digunakan oleh server slave untuk terhubung dan berkomunikasi dengan server master selama replikasi.
  • master_host merupakan alamat host dari server master
  • master_user merupakan user replica pada server master
  • master_password merupakan password dari user tersebut
  • master_log_file dan master_log_pos merupakan status binary log files beserta lokasinya pada server master. Ini harus sama dengan status master yang ada pada server master.


4) Jika sudah, sekaranng jalankan mode slavenya
start slave;

5) Sekarang lihat status slave untuk pengecekan apakah antara server master ataupun slave berhasil tersinkronisasi atau tidak
show slave status\G
 Nah, jika berhasil tersinkronisasi, pada Slave_IO_Running dan Slave_SQL_Running statusnya yaitu Yes



Pengujian Pada Client


1) Untuk pengujian, coba buat database pada server master, terserah kalian nama databasenya apa


2) Pastikan database berhasil terbuat


3) Setelah itu, akses server slave, kemudian coba cek apakah database yang dibuat pada server master juga terdapat pada server slave?



Dan.. Selesaii...

Okee, mungkin cukup sekian untuk postingan kali ini

Sekian dan semoga bermanfaat...

Comments