Selamat berjumpa lagi pemisa, berawal dari aplikasi yang ada di pekerjaan yaitu aplikasi
Host to Host (H2H) antara server kantor dengan server Bank. Ada beberapa aplikasi
yang saya langsungkan ke server Bank menjadikan trafic ke server tersebut menjadi
penuh dengan antrian hingga susah di akses. Saya berniat membuat repikasi/mirrornya
sehingga semua aplikasi mengakses ke database kantor secara fisik server Bank tidak
memadai dengan Wind*ws XP Servernya (emang ada ...hehehe) tuh jadi curhat kan .. :).
Jadi hanya satu aplikasi saja yang langsung mengkses database ke server Bank
kasihan servernya berdarah-darah kalo lagi di akses minimal 400 user. Mudah-mudahan
cara ini bisa membantu membuat replikasi pada fisik Server IBM yang selama ini tidak
masalah dengan diakses min 1000 user. Wookkeeeh langsung saja dah kita buat
carannya.
Asumsi IP Address server 192.168.1.1 dan komputer repika 192.168.1.2
Pastikan di kedua komputer tersebut telah terinstall mysql (XAMPP) dan Firewall dibuka
port 3306 (mysql).
1. Setting Server.
Buka alamat http://localhost/phpmyadmin pada komputer server. Pilih menu replikasi.
Apabila Anda hanya menginginkan satu database yang akan dibuat repikasinya maka
pilihan seperti dibawah ini. Kemudian copy settingan yang sudah di generate oleh
phpmyadmin dilanjutkan klik kirim.
Untuk memudahkan mengedit file my.cnf kita gunakan Control Panel XAMPP. Klik config
kemudian pilih file my.cnf. Maka akan tampil file my.cnf nya.
Paste settingan yang telah di copy di atas dan edit max_allowed_packet = 16M.
Coba Anda lakukan perintah insert , update atau delete pada database server. secara
otomatis komputer repikasi akan menyesuaikan. Mudah bukan .. sekian terima kasih.
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;
+---------------+----------+--------------+------------------+
| File
+---------------+----------+--------------+------------------+
| mysql-bin.006 | 183
| contohdb
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
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.
Definisi :
Replication Database adalah suatu fitur teknologi pada dunia pemrograman
database yang memungkinkan suatu database untuk mereplikasi atau mengopy
datanya ke database lain secara otomatis. Secara sederhana replikasi database
adalah proses automatik perintah dari database satu ke database lain yang tentunya
terhubung dalam jaringan.
Kegunaan :
Kegunaan dari proses replikasi ini adalah bila suatu database satu mengalami
kerusakan maka secara otomatis semua data yang telah disimpan pada database
satu dapat dilihat kembali di database lain. Kalau pada pembahasan diatas yaitu
Proses Backup dan Restore agak kurang praktis, maka konsep inilah solusi
keefektifan dalam menjawab kekurangpraktisan kedua proses diatas. Konsep ini
merupakan konsep teknologi yang unik, karena secara otomatis segala perintah
yang ada pada database satu akan tersimpan pada database lain sehingga bila
kehilangan data pada database satu, database masih tersimpan rapih di database
lain.
Praktik Proses Replikasi :
Praktik proses replikasi database ini saya lakukan dengan database MySQL. Pada
MySQL sendiri sudah mendukung konsep teknologi Replikasi namun tidak secara
default langsung terseting untuk melakukan proses replikasi. Kita mesti menyeting
terlebih dahulu agar bisa melakukan proses ini.
Satu hal yang penting saat penyetingan proses Replikasi adalah sudah ada 2
komputer yang terkoneksi / terhubung dan 2 komputer tersebut sudah ter-install
MySQL sebagai proses kegiatan database.
Dalam proses replikasi database dikenal 2 server database atau 2 MySQL pada
komputer yaitu sebagai Master server dan Slave server. Master server adalah server
yang biasa dipergunakan untuk melakukan kegiatan managing database. Sedangkan
Slave Server adalah database yang bertindak sebagai pencatat sekaligus
pereplikasi / pengopian data setiap melakukan kegiatan managing database pada
Master Server. Slave Server memiliki alamat IP 192.168.1.1 sedangkan alamat
Master Server memiliki alamat IP 192.168.1.2
Sebelum itu pula kita mesti membuat user pada Server Slave yang dapat diakses
oleh siapapun dalam jaringan manapun. Disini kami membuat user dengan nama
tamu dan password tamu serta user tamu ini memiliki akses GRANT ALL pada semua
database.
[ gambar 1 ]
Bila sudah, mari kita mulai menyeting konfigurasinya :
Pada Komputer Master Server :
Pada komputer Master Server cari file my.ini, biasanya selalu ada pada installan
MySQL kita. Kalau pada komputer kami berada pada path C:\Program
Files\MySQL\MySQL Server
5.1\my.ini. Bila sudah ditemukan, coba buka dengan notepad, lalu lihat
konfigurasinya.
Lalu ketikan dibawah [mysqld] dengan :
log
log-bin=mysql-log.bin
binlog-do-db=nama_database_replication
server-id=1
Lengkapnya bisa dilihat gambar dibawah ini :
[ gambar2 ]
Pada gambar diatas, dataku adalah nama database yang akan dipergunakan untuk
proses replikasi, database yang akan secara otomatis disimpan pada Slave Server.
Bila sudah, simpan perubahan tersebut, lalu restart service mysql dengan cara
mematikan dan menghidupkan lagi servicenya.
[ gambar3 ]
Bila sudah, masuk ke konsol mysql dengan user root lalu buat user yang akan
melakukan proses replikasi. Caranya dengan mengetikan perintah ini :
mysql> grant replication slave on *.* to tamu@192.168.1.1 identified by tamu;
Bila sudah refresh perubahan user baru dengan perintah :
mysql> flush privileges
Bila sudah merefress, coba lihat status Master dengan cara mengetikan perintah ini :
[ gambar4 ]
Pada gambar, terdapat file log yang berisi perintah-perintah Master Server disimpan,
posisi Master Server dan Database yang di replikasi. Sampai sini, sekarang kita
setting di Slave Server.
[ gambar5 ]
Bila sudah simpan perubahan pada file my.ini, lalu lakukan restart service mysqlnya
seperti pada gambar 2.
Silakan di testing dengan membuat atau memodifikasi pada database yang dijadikan
replikasi.
Mohon dikoreksi bila ada yang salah.
12 Comments
Mirror. Salah satu kata yang mungkin sudah biasa terdengar untuk kalangan
profesional di bidang SQL Server. Ya, Database Mirroring lebih tepatnya.
Database Mirroring adalah proses duplikasi database ke lokasi lain (server lain)
dengan tujuan agar database tersebut terhindar dari hal yang dapat mengganggu
kestabilan database tersebut. Misalnya crash, data tidak bisa di akses, ataupun data
tersebut mengalami corrupt.
Dengan adanya fitur Mirror dari SQL Server ini, kita bisa mengantisipasi terjadinya
hal-hal tersebut di atas. Karena dengan menjalankan Database Mirroring, kita bisa
menjalankan proses Failover (baik secara otomatis maupun manual).
Failover adalah proses mengambil alih fungsi dari server yang mati (principal) ke
server backup (mirror), sehingga komputer client tidak mengetahui jika terjadi
kegagalan pada server, karena proses yang dilakukan pada server yang gagal atau
mati akan dilanjutkan oleh server backup.
Pada dasarnya, jika kita ingin menjalankan Failover secara manual, kita hanya butuh
2 server saja yaitu server yang di sebut Principal dan Mirror.
Namun jika menginginkan Failover secara otomatis, dibutuhkan satu server lagi yang
biasa disebut Witness yang berfungsi sebagai monitor terhadap Principal dan Mirror.
Pada pembahasan kali ini, kita akan membahas Database Mirroring dengan metode
Failover secara manual. Berarti kita hanya menggunakan dua server saja (Principal
dan Mirror). Berikut ini langkah-langkah proses Database Mirroring.
1. Langkah yang pertama adalah kita harus set recovery database tersebut secara
full (dari server principal) dengan script dibawah ini :
Use master;
GO
ALTER DATABASE NamaDatabase
SET Recovery FULL;
GO
Contoh :
USE master;
GO
ALTER DATABASE Ax_2009_Live
SET RECOVERY FULL;
GO
2. Kemudian melakukan backup database yang akan di mirror. Ada baiknya, proses
backup ini di lakukan pada saat database tersebut sedang offline atau tidak di akses
oleh server production. Berikut adalah script untuk menjalankan backup database.
Dalam hal ini, kita backup database ke folder sharing.
BACKUP DATABASE NamaDatabase
TO DISK = Lokasi directory database\NamaDatabase.bak
WITH FORMAT
GO
Contoh :
3. Selanjutnya database log perlu kita backup juga, dengan script di bawah ini :
BACKUP LOG NamaDatabase
TO DISK = Lokasi directory database\NamaDatabase.bak
GO
Contoh :
BACKUP LOG Ax_2009_Live
TO DISK = \\10.1.1.28\BACKUP_DB\LOG\Ax_2009_Live.bak
GO
4. Jika proses backup database dan log sudah selesai, selanjutnya restore database
dan log tersebut ke server yang di jadikan sebagai Mirror. Berikut script untuk restore
database :
RESTORE DATABASE NamaDatabase
FROM DISK = Lokasi directory database\NamaDatabase.bak
WITH NORECOVERY,
MOVE NamaDatabase TO
Lokasi directory database\NamaDatabase_Data.mdf,
MOVE NamaDatabase_Log TO
Lokasi directory database\NamaDatabase_Log.ldf';
GO
Contoh :
RESTORE DATABASE Ax_2009_Live
FROM DISK = G:\MSSQL\SQL\BACKUP\DATA\Ax_2009_Live.bak
WITH NORECOVERY,
MOVE Ax_2009_Live TO
G:\MSSQL\SQL\DATA\Ax_2009_Live_Data.mdf,
MOVE Ax_2009_Live_Log TO
G:\MSSQL\SQL\LOG\Ax_2009_Live_Log.ldf';
GO
Perlu diketahui, untuk proses mirror, database yang di restore memang berstatus
Restoring dan tidak bisa dipakai karena berfungsi untuk mirror database dari
principal.
5. Selanjutnya restore sekali lagi database log dengan script dibawah ini
RESTORE LOG NamaDatabase
FROM DISK = Lokasi directory database\NamaDatabase.bak
WITH FILE=1, NORECOVERY
GO
Contoh :
RESTORE LOG Ax_2009_Live
FROM DISK = G:\MSSQL\SQL\BACKUP\LOG\Ax_2009_Live.bak
WITH FILE=1, NORECOVERY
GO
9. Karena kita menjalankan failover secara manual, maka kita tidak perlu memakai
server Witness. Pada tampilan ini, pilih No.
11. Selanjutnya pilih server yang akan dijadikan sebagai server Mirror.
12. Hal penting yang perlu diperhatikan adalah service account pada tiap masingmasing server, tentunya kita harus menggunakan service account yang memang
digunakan untuk SQL Server.
14. Selanjutnya akan tampil dialog box yang akan menanyakan proses eksekusi
Database Mirroring, Pilih Start Mirroring.
15. Jika statusnya Synchronized: the database are fully synchronized, maka
database dari server Principal ke server Mirror sudah Synchronize.
16. Untuk memastikan lagi database tersebut sudah synchronize, kita bisa
menggunakan Mirror Monitoring seperti gambar berikut.
18. Jika proses Failover berjalan sukses, maka database akan berpindah ke server
yang sebelumnya sebagai Mirror.