Replikasi Database MySQL antara 2 Mesin Berbasis Linux Ubuntu
Berikut langkah-lankah untuk melakukan replikasi antara 2 mesin server database berbasis Ubuntu;
I. Pertama-tama siapkan semua kebutuhan yaitu 2 mesin berbasis Ubuntu yang telah diinstal MySQL (kalau bisa versi terbaru, walaupun replikasi sebenarnya sudah tersedia sejak MySQL versi 3.23.15). Nah mesin pertama (misal IP: 192.168.1.100) yang akan kita gunakan sebagai Master dan yang kedua (misal IP: 192.168.1.101) sebagai Slave, pastikan terkoneksi dalam jaringan dan tidak ada masalah dengan port yang digunakan MySQL (defaultnya 3306).
II. Selanjutnya kita mulai dengan mengkonfigurasi mesin Master. Adapun yang harus dilakukan adalah;
a. Membolehkan (enable) networking untuk MySQL, sehingga MySQL di mesin ini bisa diakses dari jaringan/berbagai IP Address. Caranya dengan memastikan pada my.cnf (biasanya di /etc/mysql/my.cnf) 2 baris, ’skip-networking’ dan ‘bind-address=127.0.0.1″ tidak aktif dengan menambahkan karakter komentar (#) di awal barisnya, sehingga menjadi;
# skip-networking
# bind-address = 127.0.0.1
b. Selanjutnya setup lokasi file log-bin, nama database (di tutorial ini kita akan menggunakan database employee) dan id-server;
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=employee
server-id=1
c. Agar konfigurasi baru bisa langsung berfungsi, silahkan restart MySQL dengan perintah sudo /etc/init.d/mysql restart
d. Setelah itu masuk ke dalam mysql dengan perintah di terminal mysql -u root -p, di terminal ketika connect ke MySQL maka prompt-nya akan berubah dari $ (atau #) menjadi mysql> . Nah disini kita akan membuat user baru database MySQL yang akan diberi hak untuk melakukan replikasi;
mysql> GRANT REPLICATION SLAVE ON *.* TO ’slave_user’@’%’ IDENTIFIED BY ‘password_slave_user’;
mysql> FLUSH PRIVILEGES;
ket= username ’slave_user’ dan password ‘password_slave_user’ silahkan diganti sesuai keinginan
e. Setelah itu kita ambil informasi binary log dari database yang kita ingin replikasi,
mysql> USE employee;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
Maka akan muncul keluaran yang mirip seperti ini;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000003 | 98 | employee | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
Simpan informasi ini untuk digunakan pada konfigurasi di mesin Slave. Setelah itu jangan lupa unlock dulu semua table tadi, dan keluar dengan perintah;
mysql> UNLOCK TABLES;
mysql> FLUSH PRIVILEGES;
mysql> exit;
f. Selanjutnya backup database employee yang akan kita replikasi, untuk nantinya kita restore di Slave agar kondisi database di kedua mesin adalah sama. Ini bisa dilakukan di terminal dengan perintah;
$ sudo mysqldump -u root -p<password> –opt employee > employee.sql
III. Langkah selanjutnya adalah mengatur konfigurasi mesin Slave-nya, adapun yang harus dilakukan adalah;
a. Dari terminal kita masuk ke MySQL, setelah itu kita buat database baru bernama employee sama seperti di Master, dan langsung keluar;
mysql> CREATE DATABASE employee;
mysql> exit;
b. Di terminal restore backup database employee dari Master dengan perintah
$ sudo mysql -u root -p<password> employee < /lokasi/folder/employee.sql
c. Selanjutnya konfigurasi file my.cnf di mesin Slave, sesuai dengan konfigurasi jaringan dan Master sebelumnya;
server-id=2
master-host=192.168.1.100
master-user=slave_user
master-password=password_slave_user
master-connect-retry=60
replicate-do-db=employee
Ket: nilai server-id, dapat diganti dengan angkat integer positif selain 1 yang sudah dipakai oleh Master
d. Restart MySQL agar konfigurasi baru bisa berjalan.
e. Kemudian masuk lagi ke mysql di terminal dan jalankan, perintah berikut ini;
mysql> SLAVE STOP;
mysql> CHANGE MASTER TO MASTER_HOST=’192.168.1.100′, MASTER_USER=’slave_user’, MASTER_PASSWORD=’password_slave_user‘, MASTER_LOG_FILE=’mysql-bin.000003‘, MASTER_LOG_POS=98;
mysql> START SLAVE;
mysql> FLUSH PRIVILEGES;
mysql> exit;
IV. Silahkan ditest, harusnya kalau tidak ada langkah yang salah (bisa jadi Anda yang salah mengikuti tutorial ini, atau tutorial Bair memang ada yang salahnya
) maka jika di Master terjadi perubahan, maka Slave akan ikut-ikutan.
———–
Tutorial diatas adalah materi pengantar pertemuan komunitas Ubuntu Palembang/SumSel, bulan Juli, dan diambil dari subair.wordpress.com.