Pages

Saturday, January 14, 2012

Setting Database MySQL Replication on Windows OS

Sudah lama nggak nulis di blog, sekarang coba nulis lagi.. siapa tahu bisa berguna buat yang lain atau paling tidak bisa buat catatan pribadi jika suatu hari nanti lupa. :)

Ok, dari awal dulu.
Apa itu replication?
Bisa dilihat sendiri di link berikut ini :
http://dev.mysql.com/doc/refman/5.5/en/replication.html

Yang dibutuhkan adalah 2 (dua) mesin komputer server dengan spesifikasi yang sama/setara (optional) yang telah saling terhubung dalam satu jaringan komputer, database engine MySQL, dicontoh ini penulis menggunakan MySQL Versi 5.5. Dalam contoh ini kita umpamakan 2 mesin komputer server dengan nama Master dan Slave dengan masing-masing ip address Master = 192.168.10.1 dan Slave = 192.168.10.2, Kemudian install database engine MySQL di setiap mesin komputer server baik Master maupun Slave. Setelah database engine MySQL terinstall dengan sempurna, Buat satu database sederhana dengan user root, dan buat juga tabelnya (database apa saja) dengan struktur yang benar-benar sama di Master maupun Slave. Pada artikel ini database nya adalah dbsample dan tabelnya adalah siswa.
Setelah itu lakukan langkah-langkah setup berurut berikut ini :


Pada mesin komputer Master :

1.
Matikan service dari MySQL, Dengan cara masuk ke Command Prompt Windows ketikan sintaks berikut :
C:\>NET STOP MySQL

2. Edit file [my.ini] secara default terletak di : “C:\Program Files\MySQL\MySQL Server 5.5/”

[mysqld]
log-bin=mysql-bin
binlog-do-db=dbsample
#Jika ada lebih dari 1 database yang akan direplikasi tambahkan seperti dibawah ini:

binlog-do-db=dbsample2

server-id=1

3.
Jalankan kembali service MySQL, Dengan cara masuk ke Command Prompt Windows ketikan sintaks berikut : C:\>NET START MySQL

4. Tambahkan user replikasi (contoh: slave_user) disini penulis memakai SQLYOG sebagai perantara namun bisa juga menggunakan Command Line MySQL langsung.


mysql>CREATE USER ‘slave_user’@’%’ IDENTIFIED BY ‘passwordmysql’;
mysql>GRANT REPLICATION SLAVE ON *.*
-> TO ‘slave_user’@’%’;

5. Selanjutnya berikan perintah dibawah ini pada shell mysql (ekseskusi satu persatu baris).

FLUSH PRIVILEGES;
FLUSH TABLES WITH READ LOCK;

SHOW MASTER STATUS;


Outputnya adalah (output ini harus ada):
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 | 107 | dbsample | |
+——————+———-+————–+——————+

1 row in set (0.00 sec)


Catat nama file log dan position-nya. Kalau di contoh:
File : mysq-bin.000001
Position : 107
ini penting untuk menset nanti di Slave
Server.

Pada mesin komputer Slave :


1. Matikan service dari MySQL, Dengan cara masuk ke Command Prompt Windows ketikan sintaks berikut :
C:\>NET STOP MySQL

2. Edit file [my.ini] secara default terletak di : “C:\Program Files\MySQL\MySQL Server 5.5/”

[mysqld]

server-id=2 #bebas asal jangan sama dengan server-id di Master


3. Jalankan kembali service MySQL, Dengan cara masuk ke Command Prompt Windows ketikan sintaks berikut :
C:\>NET START MySQL


4. Lanjut dengan Ketik perintah ini di shell mysql:

SLAVE STOP;
CHANGE MASTER TO MASTER_HOST=’192.168.10.1’, MASTER_USER=’slave_user’, MASTER_PASSWORD=’passwordmysqlmaster’, MASTER_LOG_FILE=’mysql-bin.000001’, MASTER_LOG_POS=107;
START SLAVE;
FLUSH PRIVILEGES;
exit;


5. Selesai.Test dengan cara masukkan data baru atau edit data lama pada master.Dan lihat hasilnya pada slave.Secara otomatis slave tersinkronisasi datanya dari master (kedua data sama).

Sumber Referensi :
- http://dev.mysql.com/doc/refman/5.5/en/replication.html
- http://forums.mysql.com/read.php?26,171776,205870
- http://sempoel.wordpress.com/2009/09/11/membuat-mysql-database-replicationmirroring-di-paket-xampp-1-7-3a/
- http://www.howtoforge.com/mysql5_master_master_replication_debian_etch