[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]

advertisement
[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]
February 28, 2012
MODUL 8 PRAKTIKUM BASIS DATA TERDISTRIBUSI
“Replikasi MySql”
Pendahuluan
Replikasi database berfungsi untuk mirroring database antar 2 server atau lebih. Dengan
satu server sebagai master dan server-server lain sebagai slave. Setiap kali update data dilakukan di
server master, akan secara otomatis diupdatekan ke server-server slave, dengan demikian isi
database semua server akan sama. Database pada server slave ini dapat berfungsi sebagai backup
database.
Ketika replikasi berjalan, statemen SQL yang merubah data disimpan kedalam file binary
log(bin.log) pada server master. Hanya statemen SQL yang merubah data saja yang akan disimpan
didalam file log.
Sebelum memulai konfigurasi, agar replikasi berjalan dengan lancar perlu diperhatikan
bahwa:
•
Percobaan replikasi membutuhkan minimal 2 komputer dengan versi mysql yang
sama.
•
Catat IP Adress dari masing-masing komputer, dan tentukan mana yang menjadi
master dan yang menjadi slave.
•
Log MySql harus aktif.
•
Innodb harus aktif.
•
Pastikan database tidak sedang diakses.
•
Database yang akan digunakan adalah database x, load database x ke server master.
Konfigurasi Master Database
Buka dan edit file my.ini atau my.cnf yang terletak pada direktori bin pada mysql. Atur agar
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
1
[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]
February 28, 2012
Selanjutnya setup lokasi file log-bin, nama database (di praktikum ini kita akan menggunakan
database x) dan id-server (id_server=1 digunakan untuk master, sedangkan slave dapat
menggunakan id 2 dan/atau seterusnya;
log-bin = mysql-bin.log
binlog-do-db=x
server-id=1
restart MySQL untuk menerapkan konfigurasi baru tesebut.
Setelah itu, melalui command prompt, masuk ke dalam mysql dengan perintah di terminal
mysql -u root -p, di terminal ketika connect ke MySQL maka prompt-nya akan berubah menjadi
mysql> . Nah disini kita akan membuat user baru database MySQL yang akan diberi hak untuk
melakukan replikasi;
mysql>
GRANT
REPLICATION
SLAVE
ON
*.*
TO
’u_slave’@’%’
IDENTIFIED BY ‘123456’;
mysql> FLUSH PRIVILEGES;
ket= username ’u_slave’ dan password ‘123456’ silahkan diganti sesuai keinginan
perintah diatas akan melakukan insert ke dalam database mysql tabel user. untuk memeriksa, dapat
dilihat dengan perintah:
mysql> use mysql;
mysql> select * from user where user = ‘u_slave’;
Setelah itu kita ambil informasi binary log dari database yang kita ingin replikasi,
mysql> USE x;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
Maka akan muncul keluaran yang mirip seperti ini;
+——————+———-+————–+——————+
2
[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]
February 28, 2012
| File
| Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000002 |
107 | x
|
|
+——————+———-+————–+——————+
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;
Selanjutnya backup database x yang akan kita replikasi, untuk nantinya kita restore di Slave
agar kondisi database di kedua mesin adalah sama. ingat, database harus sama agar tidak ada
perbedaan data antara server master dengan server slave. Ini bisa dilakukan di terminal dengan
perintah;
C:\xampp\mysql\bin > mysqldump -u root –p x > x.sql
hasil backup akan tersimpan di C:\xampp\mysql\bin\x.sql. Silakan di cek!
Konfigurasi Slave Database
Dari command promt, masuk ke MySQL, setelah itu kita buat database baru bernama x sama
seperti di Master, dan langsung keluar;
mysql> CREATE DATABASE x;
mysql> exit;
masih dari command prompt, restore backup database x dari Master dengan perintah
C:\mysql\bin\ > mysql -u root –p x < x.sql
3
[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]
February 28, 2012
Selanjutnya konfigurasi file my.cnf atau my.ini di server slave, sesuai dengan konfigurasi
jaringan dan Master sebelumnya;
server-id=2
replicate-do-db=x
Ket:
•
nilai server-id, dapat diganti dengan angkat integer positif selain 1 yang sudah dipakai oleh
Master
•
replicate-do-db adalah database pada master yang akan direplikasi.
Restart MySQL agar konfigurasi baru bisa berjalan. Kemudian masuk lagi ke command prompt mysql
dan jalankan, perintah berikut:
mysql> SLAVE STOP;
mysql> CHANGE MASTER TO MASTER_HOST=’192.168.1.2′,
MASTER_USER=’u_slave’, MASTER_PASSWORD=’123456‘,
MASTER_LOG_FILE=’mysql-bin.000002‘, MASTER_LOG_POS=107;
mysql> START SLAVE;
mysql> FLUSH PRIVILEGES;
mysql> exit;
Ket: Isian parameter MASTER disesuaikan dengan server master-nya.
Pengujian
Untuk melihat status slave dapat dilakukan dari command prompt mysql pada server slave dengan
perintah:
mysql > show slave status\G;
Catat hasilnya!
Berikutnya anda coba menambah data pada server master, seperti misal perintah berikut:
mysql> use x;
mysql > insert into produk
values(‘P0004’,’Gula’,’S0002’,’K2’,’10000’,’30’,’0’);
mysql> select * from produk;
4
[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]
February 28, 2012
Catat hasilnya! Ada berapa baris?
Selanjutnya anda periksa di server slave apakah penambahan data yang sebelumnya juga terreplikasi dengan perintah berikut:
mysql> use x;;
mysql> select * from produk;
Bagaimana hasilnya? Apakah sama dengan data pada server master?
5
[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]
February 28, 2012
MODUL 8 PRAKTIKUM BASIS DATA TERDISTRIBUSI
“Replikasi MySql”
Pendahuluan
Replikasi database berfungsi untuk mirroring database antar 2 server atau lebih. Dengan
satu server sebagai master dan server-server lain sebagai slave. Setiap kali update data dilakukan di
server master, akan secara otomatis diupdatekan ke server-server slave, dengan demikian isi
database semua server akan sama. Database pada server slave ini dapat berfungsi sebagai backup
database.
Ketika replikasi berjalan, statemen SQL yang merubah data disimpan kedalam file binary
log(bin.log) pada server master. Hanya statemen SQL yang merubah data saja yang akan disimpan
didalam file log.
Sebelum memulai konfigurasi, agar replikasi berjalan dengan lancar perlu diperhatikan
bahwa:
•
Percobaan replikasi membutuhkan minimal 2 komputer dengan versi mysql yang
sama.
•
Catat IP Adress dari masing-masing komputer, dan tentukan mana yang menjadi
master dan yang menjadi slave.
•
Log MySql harus aktif.
•
Innodb harus aktif.
•
Pastikan database tidak sedang diakses.
•
Database yang akan digunakan adalah database x, load database x ke server master.
Konfigurasi Master Database
Buka dan edit file my.ini atau my.cnf yang terletak pada direktori bin pada mysql. Atur agar
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
1
[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]
February 28, 2012
Selanjutnya setup lokasi file log-bin, nama database (di praktikum ini kita akan menggunakan
database x) dan id-server (id_server=1 digunakan untuk master, sedangkan slave dapat
menggunakan id 2 dan/atau seterusnya;
log-bin = mysql-bin.log
binlog-do-db=x
server-id=1
restart MySQL untuk menerapkan konfigurasi baru tesebut.
Setelah itu, melalui command prompt, masuk ke dalam mysql dengan perintah di terminal
mysql -u root -p, di terminal ketika connect ke MySQL maka prompt-nya akan berubah menjadi
mysql> . Nah disini kita akan membuat user baru database MySQL yang akan diberi hak untuk
melakukan replikasi;
mysql>
GRANT
REPLICATION
SLAVE
ON
*.*
TO
’u_slave’@’%’
IDENTIFIED BY ‘123456’;
mysql> FLUSH PRIVILEGES;
ket= username ’u_slave’ dan password ‘123456’ silahkan diganti sesuai keinginan
perintah diatas akan melakukan insert ke dalam database mysql tabel user. untuk memeriksa, dapat
dilihat dengan perintah:
mysql> use mysql;
mysql> select * from user where user = ‘u_slave’;
Setelah itu kita ambil informasi binary log dari database yang kita ingin replikasi,
mysql> USE x;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
Maka akan muncul keluaran yang mirip seperti ini;
+——————+———-+————–+——————+
2
[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]
February 28, 2012
| File
| Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000002 |
107 | x
|
|
+——————+———-+————–+——————+
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;
Selanjutnya backup database x yang akan kita replikasi, untuk nantinya kita restore di Slave
agar kondisi database di kedua mesin adalah sama. ingat, database harus sama agar tidak ada
perbedaan data antara server master dengan server slave. Ini bisa dilakukan di terminal dengan
perintah;
C:\xampp\mysql\bin > mysqldump -u root –p x > x.sql
hasil backup akan tersimpan di C:\xampp\mysql\bin\x.sql. Silakan di cek!
Konfigurasi Slave Database
Dari command promt, masuk ke MySQL, setelah itu kita buat database baru bernama x sama
seperti di Master, dan langsung keluar;
mysql> CREATE DATABASE x;
mysql> exit;
masih dari command prompt, restore backup database x dari Master dengan perintah
C:\mysql\bin\ > mysql -u root –p x < x.sql
3
[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]
February 28, 2012
Selanjutnya konfigurasi file my.cnf atau my.ini di server slave, sesuai dengan konfigurasi
jaringan dan Master sebelumnya;
server-id=2
replicate-do-db=x
Ket:
•
nilai server-id, dapat diganti dengan angkat integer positif selain 1 yang sudah dipakai oleh
Master
•
replicate-do-db adalah database pada master yang akan direplikasi.
Restart MySQL agar konfigurasi baru bisa berjalan. Kemudian masuk lagi ke command prompt mysql
dan jalankan, perintah berikut:
mysql> SLAVE STOP;
mysql> CHANGE MASTER TO MASTER_HOST=’192.168.1.2′,
MASTER_USER=’u_slave’, MASTER_PASSWORD=’123456‘,
MASTER_LOG_FILE=’mysql-bin.000002‘, MASTER_LOG_POS=107;
mysql> START SLAVE;
mysql> FLUSH PRIVILEGES;
mysql> exit;
Ket: Isian parameter MASTER disesuaikan dengan server master-nya.
Pengujian
Untuk melihat status slave dapat dilakukan dari command prompt mysql pada server slave dengan
perintah:
mysql > show slave status\G;
Catat hasilnya!
Berikutnya anda coba menambah data pada server master, seperti misal perintah berikut:
mysql> use x;
mysql > insert into produk
values(‘P0004’,’Gula’,’S0002’,’K2’,’10000’,’30’,’0’);
mysql> select * from produk;
4
[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]
February 28, 2012
Catat hasilnya! Ada berapa baris?
Selanjutnya anda periksa di server slave apakah penambahan data yang sebelumnya juga terreplikasi dengan perintah berikut:
mysql> use x;;
mysql> select * from produk;
Bagaimana hasilnya? Apakah sama dengan data pada server master?
5
Download