S0t4's Blog

Hanya Catatan dan Mencoba Untuk Berbagi

Friday, September 11, 2009

Membuat MYSQL Database Replication/Mirroring di Paket XAMPP 1.7.3a

  Blogger Sejati       Friday, September 11, 2009
Kebutuhan akan adanya High Availability (HA) tidak hanya pada webserver.Bisa juga HA dibuat untuk sistem database. HA pada database dibuat dengan sistem replikasi.Artinya akan ada sebuah sistem dengan minimal 2 database server yang akan berfungsi masing-masing sebagai master dan slave.Semua transaksi data diproses dan disimpan di database master.Secara bersamaan sistem akan otomatis mereplikasi semua data dari master ke slave (sinkronisasi secara otomatis).Jika sebelumnya HA pada webserver kita sudah berjalan (lihat artikel sebelumnya) , kita sudah memiliki infrastuktur HA yang komplit untuk menjalan aplikasi database kita yang dapat mencegah Single Point Of Failure (SPOF) pada layer aplikasi.

Untuk memulai database replication :
1.Pastikan kedua database server mysql sudah berjalan dengan baik
2.Pastikan kedua database server dapat berkomunikasi ip dari master adalah 192.168.0.156/24 sedangkan ip dari slave adalah 192.168.0.158
3.Sistem pada artikel ini memakai mysql server 5 pada paket XAMPP 1.7.3a.

4. Pada DATABASE MASTER
4.1. Buat database sederhana dengan user root, dan buat juga tabelnya.(database apasaja).kemudian isikan beberapa data pada tabel tersebut.Pada rtikel ini database nya adalah sample dan tabelnya adalah siswa.

4.2. Stop service mysql
#/opt/lampp/lampp stopmysql.

4.3. Edit file –> /opt/lampp/etc/my.cnf, pada section [mysqld] tambahkan baris berikut ini :

[mysqld]
.
.
log-bin=mysql-bin
binlog-do-db=sample
server-id=1


4.4. Start MySQL
#/opt/lampp/lampp startmysql

4.5 Login ke mysql dengan perintah:
#mysql -u root -p #isikan password root nya

4.6 Buat user replikasi (ex nama slave_user)
command:
mysql> CREATE USER 'slave_user'@'%.mydomain.com' IDENTIFIED BY 'admin123';
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'slave_user'@'%.mydomain.com';


4.7 Berikan perintah dibawah ini pada shell mysql (ekseskusi satu persatu baris ya)
FLUSH PRIVILEGES;
USE sample;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;



#Outputnya adalah (output ini harus ada):
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000004 | 98 | sample | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)


catat nama file log dan position-nya. Kalau di contoh:
File : mysq-bin.000004
Position : 98
ini penting untuk menset nanti di SLAVE Server.


UNLOCK TABLES;
FLUSH PRIVILEGES;


Dengan menggunakan tools phpmyadmin, export database sample (nantinya hasil eksport ini akan digunakan di database slave)



5.Pada DATABASE SLAVE

Dengan menggunakan tools phpmyadmin, import database sample yang tadi sudah dieksport
5.1. Stop Service Mysql
# /opt/lampp/lampp stopmysql
5.2. Edit /opt/lampp/etc/my.cnf :
pada section [mysqld]

[mysqld]
.
.
server-id=2 #bebas asal jangan sama dengan server-id di master
master-host=192.168.0.156
master-user=slave_user
master-password=admin123
master-connect-retry=60
replicate-do-db=sample



Kalau mau tabel tertentu dalam database 'sample' tidak ikut direplikasi, tambahkan baris berikut di my.cnf SLAVE SERVER

replicate-ignore-table=sample.some_table

5.3.Masuk ke mysql slave dengan perintah:
#mysql -u root -p
5.4.Ketik perintah ini di shell mysql:
SLAVE STOP;
CHANGE MASTER TO MASTER_HOST=’192.168.0.156′, MASTER_USER=’slave_user’, MASTER_PASSWORD=’admin123′, MASTER_LOG_FILE=’mysql-bin.000004′, MASTER_LOG_POS=98;
START SLAVE;
FLUSH PRIVILEGES;
exit;


5.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)


Update terbaru Baca Disini

logoblog

Thanks for reading Membuat MYSQL Database Replication/Mirroring di Paket XAMPP 1.7.3a

Previous
« Prev Post

1 comment:

Zurex said...

Thanks infonya neh mas??? sangat bermanfaat buat referensi....

mau nanya kalo nyobanya dilingkungan window gimana ya langkahx? apa ada yang beda?