Membuat Replikasi Database MySQL

Untuk penggunaan webserver kelas besar dan database mysql, sebaiknya menyediakan fasilitas duplikasi server, hal ini bertujuan guna melakukan backup atau mirroring, sehingga jika terjadi failure pada server utama, dapat melakukan pergantian system tanpa banyak menggangu keberadaan data yang tersimpan.

Ada beberapa cara yang bisa dilakukan, salah satunya adalah melakukan replikasi database. Dalam simulasi ini, penulis menggunakan system openSUSE 11.3 dan database mysql. Mungkin tidak selalu yang penulis sampaikan disini dapat berjalan mulus di system yang anda gunakan, tapi paling tidak, seperti inilah yang penulis lakukan dan berjalan pada system yang penulis miliki.

1. Mengkonfigurasi Master

Edit file my.cnf, untuk openSUSE biasa nya terdapat pada /etc/my.cnf. untuk distro lain silahkan disesuaikan saja path-nya. Lalu buat konfigurasi seperti ini:

log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=contohdb
server-id=1

kemudian restart service mysql dengan rcmysql restart atau perintah yang biasa anda gunakan pada distro masing-masing. Sekarang kita beralih ke SHELL mysql, dan kita buat user untuk Slave, ketik perintah:

GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘<some_password>’; (Replace <some_password> with a real password!)
FLUSH PRIVILEGES;

masih didalam console terminal shell mysql, berikan hak akses slave user:

USE contohdb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

maka perintah diatas akan menampilkan:

+---------------+----------+--------------+------------------+
| File          | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| mysql-bin.006 | 183      | contohdb     |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)

keluar dengan perintah quit; dari shell mysql.

Ada dua cara agar mysql terduplikasi untuk pertama kali, pertama, dengan melakukan dump manual database cpntohdb dari Master ke Slave, dan kedua, dengan perintah LOAD DATA FROM MASTER dari server slave, namun cara kedua tidak disarankan, senadaikan database kita berkapasitas besar, maka akan banya terjadi pemborosan proses dan trafic. Untuk itu kita akan menggunakan cara pertama yaitu dengan mendump database Master (export ke .sql) ke database Slave (import .sql), tool yang bisa digunakan seperti biasa bisa menggunakan tool yang anda gunakan, misal phpMyAdmin (export – import .sql).

Jika anda merasa tidak nyaman dengan banyak jendela yang aktif, tetaplah di console shell untuk melakukan export dump dan ketikan:

mysqldump -u root -p<password> –opt contohdb > contohdb.sql

Simpanlah file contohdb.sql hasil export tadi diatas, sampai disini tahapan mengkonfigurasi Master Server MySQL sudah selesai.

2. Mengkonfigurasi Slave

Login ke database mysql, dan buatlah database slave dengan nama yang sama, lakukan dump import file contohdb.sql kedalam database di Slave. Untuk penggunaan console Shell, ketikan:

mysql -u root -p
Enter password:
CREATE DATABASE exampledb;
quit;

kemudian ketik:

mysql -u root -p<password> exampledb < /lokasi/file/contohdb.sql

edit file my.cnf pada server Slave, diumpamakan server Master menggunakan IP 192.168.0.100, maka buat seperti ini:

server-id=2
master-host=192.168.0.100
master-user=slave_user
master-password=secret
master-connect-retry=60
replicate-do-db=contohdb

kemudian restart service mysql Slave, dan selesai sudah proses konfigurasi duplikasi database mysql ini.

Sekali lagi, proses ini sudah penulis coba dan berjalan tanpa kendala, mungkin hasil akan berbeda di hasil konfigurasi anda, jangan sungkan untuk bertanya dan mencari solusinya.

 

Semoga bermanfaat.

Posted in Oprek, Personal