Implementasi Sistem Database Terdistribusi Pada MySQL

Oleh : Dicky Rahardiantoro

Secara definisi replikasi memiliki pengertian sebagai suatu proses mencopy atau mentransfer data dari suatu database ke database lain yang tersimpan pada komputer berbeda. Bila menilik artikel yang saya tulis sebelumnya tentang Pengenalan Arsitektur Database, replikasi dapat difahami sebagai proses pengkopian dan pengelolaan objek-objek dari database yang membentuk suatu sistem database terdistribusi (Distributed Database).

Pada umumnya MySQL dipergunakan secara massal sebagai Database yang cukup handal dalam menangani sistem database terpusat, seperti kebanyakan sistem database yang digunakan untuk web site, content management system, dan lain-lain. Bahkan hampir seluruh penyedia layanan hosting menyertakan dukungan produk MySQL untuk kelengkapan service-nya.

Penggunaan MySQL untuk mendukung proses replikasi database pada saat artikel ini ditulis masih sangat jarang ditemui. Implementasi sistem database terdistribusi kebanyakan masih berkiblat pada software-software dengan bandrol yang tinggi seperti Oracle, SQL Server, IBM DB2 dan lain sebagainya.

MySQL dalam hal ini tentunya tidak mau ketinggalan. Mulai versi 5.0 MySQL sudah mendukung sistem replikasi yang mana sebuah database server yang berfungsi sebagai master dapat tereplikasi datanya ke dalam satu atau lebih database server yang difungsikan sebagai slave.

Model replikasi pada MySQL adalah Asynchronous, sehingga server dengan type slave tidak selalu harus terkoneksi secara permanen untuk menerima berbagai update pada database server master. Replikasi dapat diberlakukan pada sebagian table atau pada keseluruhan database, tergantung pada kebutuhan kita.

Untuk melakukan proses replikasi dibutuhkan :
  1. dua atau lebih komputer yang berfungsi sebagai server, satu server berperan sebagai master dan yang lainnya sebagai slave
  2. adanya koneksi jaringan baik melalui LAN, WAN ataupun Wireless (setting IP Address tidak akan dibahas pada artikel ini, pembaca dianggap sudah mengerti)

Setting Pada Komputer Master

(1) Buka file my.ini

(2) Jika anda menggunakan paket Wampserver, maka tambahkan opsi berikut ini pada bagian bawah tag [wampmysqld]
server-id = 1
log-bin

(3) Setelah itu restrart MySQL

(4) Kemudian masuk ke MySQL console dengan perintah :
mysql -u root -p {password yang sesuai};

Keterangan : tidak ada spasi antara -p dengan password

(5) Jalankan perintah :
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'some_password';
keterangan : ganti dengan password yang sesuai

(6) Jalankan perintah :
FLUSH PRIVILEGES;
USE mydatabase;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

keterangan : ganti mydatabase sesuai dengan nama database yang akan direplikasi

(7) perintah di atas akan menghasilkan contoh keluaran sebagai berikut : (Lain komputer akan lain keluaran)

+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| mysql-bin.009 | 130 | mydatabase | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)


(8) Kemudian jalankan perintah unlock sebagai berikut :
UNLOCK TABLES;

(9) Langkah terakhir adalah keluar dari console dengan perintah :
quit;




Setting Pada Komputer Slave (bisa lebih dari 1 server)

(1) Buat database yang sama dengan milik master, misal : mydatabase
mysql -u root -p
{password yang sesuai};
Create database mydatabase;
quit;

(2) Buka file my.ini

(3) Jika anda menggunakan paket Wampserver, maka tambahkan opsi berikut ini pada bagian bawah tag [wampmysqld]
server-id = 2
master-host=192.168.1.1
master-user=slave_user
master-password='some_password'

master-connect-retry=60
replicate-do-db=mydatabase

Misal :
komputer master memiliki IP 192.168.1.1

(3) Setelah itu restart MySQL

(4) Kemudian masuk lagi ke console dengan perintah :
mysql -u root -p
{password yang sesuai};
STOP SLAVE;

(5) Jalankan perintah :
CHANGE MASTER TO MASTER_HOST='192.168.1.1'
-> MASTER_USER='slave_user'
-> MASTER_PASSWORD=''
-> MASTER_LOG_FILE='mysql-bin.009'
-> MASTER_LOG_POS=130;

START SLAVE;

(6) Langkah terakhir adalah keluar dari console dengan perintah :
quit;


Jika perintah di atas dijalankan dengan benar, maka segala perubahan data yang terjadi pada database server master akan selalu diikuti oleh server lain yang berfungsi sebagai slave.


--- Selamat Mencoba ---



Perhatian : Seluruh artikel di DickyRahardi.Com bebas disajikan kepada publik, bilamana hendak mengkutip sebagian atau keseluruhan artikel wajib menyertakan sumbernya secara jelas yaitu : dickyrahardi.com, dickyrahardi.blogspot.com, dickyrahardi.wordpress.com, atau sesuai dengan link per artikel secara lengkap.
(c) 2008, dickyrahardi.com

6 komentar:

gusdek said...

Artikel yg bagus.
Untuk database terdistribusi, apakah harus dgn dbms sejenis ya?
Klo dibandingkan dengan Grid-DBMS lebih bagus mana y?
Sy pernah baca klo DB Oracle udah grid enable.

thx,
gusdek.

Anonymous said...

boleh donk contoh prakteknya

spidey354@yahoo.co.id

Anonymous said...

Makasih mas atas artikelnya...sukses selalu

Anonymous said...

mas dicky...
saya sudah mencaba replikasi pada mysql sesuai artikel anda. tapi pada setting master, nama database yang di replikasi kok ga keluar ya pada saat saya show master status.
mohon penjelasan mas, thanx... (email:rochsof@yahoo.com)

Dicky Rahardi said...

#rochsof@yahoo.com :

Jangan2 anda salah dalam memasukkan parameter pada MASTER_LOG_FILE, tiap komputer / proses memiliki kemungkinan parameter yg berbeda

Anonymous said...

mas dicky, saya mau tanya... apa teknik replikasi ini bisa untuk sinkronisasi dari localhost ke server?? jadi maksudnya.. misalkan saya mempunyai portal berita online.. saya mau update berita dari localhost.. namun pada server juga terupdate gt pak... jadi kita tidak mendua kali pekerjaan.. hehehehehehe... makasih mas... mohon di balas ya...

Post a Comment

Tanggapan, pesan atau pertanyaan hendaknya disertai dengan identitas (minimal mengisi NAMA dgn men-select bagian Comment as dengan "Name/URL"). Terima kasih

(c) DickyRahardi.Com™, 2006