Replikasi MySQL (MySQL Replication) memungkinkan kita membuat salinan dari database secara realtime dari database master ke slave. Tujuan utama replikasi database adalah untuk melakukan backup dari database master, penggunakan database replikasi sangat bermanfaat jika kita melakukan analisa database, karena kita tidak perlu menyentuh database master secara langsung, sehingga jika terjadi suatu kesalahan tentunya tidak akan mempengaruhi database master.
Disini kita akan membangun replikasi database dengan model Master – Slave. Sistem yang saya gunakan pada tutorial ini adalah :
Master :
IP Address | 192.168.10.10 |
Sistem Operasi | Windows 7 |
Database | site |
Slave:
IP Address | 192.168.10.20 |
Sistem Operasi | Ubuntu 16.04 |
Database | site |
Konfigurasi Master
Membuat Database Master
Konfigurasi MySQL
Kita perlu melakukan beberapa perubahan pada file konfigurasi MySQL
my.cnf
seperti berikut:bind-address | =0.0.0.0 |
log-bin | =mysql-bin |
binlog_do_db | =site |
server-id | =1 |
Note :
Untuk server produksi bind address sebaiknya menggunakan IP Address server.
Untuk server produksi bind address sebaiknya menggunakan IP Address server.
Buat User Baru Pada Master
Dump Database
Dump database yang nantinya akan kita import ke database slave, sebelumnya kita harus mengunci database untuk mencegah terjadinya perubahan data untuk sementara.
Simpan informasi diatas untuk konfigurasi pada database slave. Setelah mengunci database selanjutnya dump database.
Izinkan kembali perubahan pada database master. Masuk ke mysql console, jalankan :
Untuk konfigurasi pada database master telah selesai, kita lanjutkan konfigurasi pada database slave.
Konfigurasi pada Slave
Buat Database
Import database site yang sebelumnya telah kita dump ke dalam database
site
pada slave.Konfigurasi MySQL pada Slave
Lokasi file konfigurasi mysql bisa berbeda untuk setiap sistem operasi atau versi mysql. Sesuaikan dengan sistem yang kita gunakan. Pada ubuntu 16.04 file konfigurasi mysql terletak di /etc/mysql/my.cnf , sesuaikan konfigurasi seperti dibawah:
log-bin | =/var/log/mysql/mysql-bin.log |
binlog_do_db | =site |
server-id | =2 |
Mulai ulang service mysql dengan perintah sudo service mysql restart . Kemudian masuk kembali ke mysql console dan jalankan perintah dibawah
Sesuaikan perintah diatas dengan informasi yang kita dapatkan sebelumnya dari perintah
SHOW MASTER STATUS
pada database master.- MASTER_HOST merupakan IP address server master
- MASTER_USER user yang telah kita buat sebelumnya pada database master
- MASTER_PASSWORD password user pada tabel master
- MASTER_LOG_FILE nama file log-bin (dari
SHOW MASTER STATUS
) - MASTER_LOG_POS posisi dimulainya replikasi (dari
SHOW MASTER STATUS
)
Sejauh ini kita telah selesai mengkonfigurasi database master dan slave, jalankan database slave :
Selesai, sekarang coba lakukan proses CRUD pada master. Jika tidak ada kesalahan dan semua tahapan telah dilakukan dengan benar, maka setiap proses CRUD yang terjadi pada database master akan secara otomatis masuk ke database slave.