Monday, August 15, 2016

Database Replication (Master to Slave) MySQL

Hallo gengs, sudah lama rasanya blog ini tidak diupdate. Pada tutorial kali ini saya akan membahas cara setup database replication (master to slave) di MySQL. 

Apa itu database replication ?, seperti nama nya database replication berarti membuat replika/copy an dari satu lebih database secara otomatis. Biasanya terdapat istilah database master(sebagai sumber data) dan database slave(sebagai tujuan data).

Terdapat pula beberapa jenis replikasi database yaitu :
  • Dilihat dari arah replikasinya:
    • master to slave -> replikasi ini bersifat 1 arah, hanya dari master menuju slave
    • master to master -> replikasi 2 arah, pada tipe replikasi ini suatu database bisa menjadi database master(sumber data) dan juga menjadi database slave yang berarti menerima data dari database lain.
  • Dari jenis komunikasinya:
    • synchronous -> biasanya digunakan ketika kita membutuhkan real time database database application
    • asynchronous
Kira - kira seperti inilah gambaran replikasi database master to slave maupun master to master

Untuk lebih jelas mengenai jenis komunikasi synchronous dan asynchronous silahkan googling :D

Karna pada tutorial kali ini kita hanya akan membuat "simple database replication" maka saya hanya menggunakan 2 buat database server, satu berperan sebagai master satu lagi berperan sebagai slave dan menggunakan jenis komunikasi asynchronous(default mysql). Kira" seperti ini ilustrasinya :
berikut ip address yang akan saya gunakan pada masing" server
master : 192.168.1.1
slave : 192.168.1.2

NOTE : JIKA TEMAN" MENGGUNAKAN VIRTUALBOX, JANGAN MENG CLONE UNTUK MEMBUAT 2 BUAH SERVER KARENA AKAN MEMILIKI UUID YANG SAMA.

Pertama kita akan mengsetting ip address dikedua server (saya menggunakan ubuntu server 16.04) :



Langkah selanjutnya adalah membuat database di database master dan slave (nama database harus sama) disini database yang saya buat adalah "test" :



Selanjutnya adalah konfigurasi database master letak file konfigurasi mysql di ubuntu 16.04 berada di direktori /etc/mysql/mysq.conf.d/mysqld.cnf edit menjadi seperti dibawah ini (binlog_do_db adalah nama database yang akan di replikasi)  :



restart mysql : /etc/init.d/mysql restart

Masuk kembali ke command line mysql, kali ini kita akan membuat user untuk database replication :


Pada tutorial kali ini replication bekerja berdasarkan log database dan position, setiap ada perubahan pada database "test" (pada kasus ini) nama file dan position akan berubah.

Langkah selanjutnya adalah konfigurasi database slave, letak konfigurasi nya sama seperti pada database master yakni di /etc/mysql/mysq.conf.d/mysqld.cnf, edit menjadi seperti dibawah ini (perhatikan server id harus berbeda dari database master) :


restart mysql : /etc/init.d/mysql restart

Hal terakhir yang harus kita lakukan adalah mengaktifkan database replication pada database slave :


Ketik show slave status; (di slave) untuk melihat apakah replikasi berhasil. coba juga untuk membuat table kemudian memasukan data ke table tersebut(di master) kemudian lihat kembali di database slave.

Demikian tutorial kali ini. Mohon maaf apabila ada kekurangan maupun kesalahan. Harap koreksi jika ada yang salah, terima kasih :)

note : jika terdapat error untuk mysql bisa dilihat di /var/log/mysql/error.log
untuk informasi lebih lanjut mengenai database replication bisa kunjungi link berikut ini :  
http://dev.mysql.com/doc/refman/5.7/en/replication.html

referensi :
http://dev.mysql.com/doc/refman/5.7/en/replication.html
https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-in-mysql