MySQL merupakan salah satu Database Engine yang walaupun gratis, tapi kemampuannya cukup handal. Sebagai bukti di RSUD Kabupaten Sumedang sampai sekarang (06-03-2010) jumalh data sudah mencapai lebih dari 10 juta record (baris) dengan sekitar 80 buah client, tapi software masih stabil.
Dengan data yang semakin membesar akan menimbulkan kekhawatiran, bagaimana apabila suatu ketika server rusak, apa yang akan terjadi pada data ? tentu akan ikut hilang juga, sedangkan kita tahu bahwa data tak ternilai harganya.
Untuk mengatasi hal tersebut dapat dilakukan diantaranya dengan cara Back Up data secara rutin. Tapi banyak sekali kelemahannya yaitu
- Pada saat proses Back Up data, kinerja server sedikitnya akan terganggu yang tentunya akan menganggu kenyamanan user
- Pada saat back up data, tidak semua data akan ter Back Up, sebab pada saat Back Up mungkin saja terjadi perubahan data yang dilakukan oleh user
- Ketika server rusak, walaupun data secara rutin di Back Up tentunya banyak data yang hilang. Data yang dapat diselamatkan hanyalah data yang ada sebelum Proses Back Up dilakukan.
Untuk menangani masalah Back Up data yang ternyata banyak sekali kelemahanya, ada satu cara yang ampuh yaitu Replikasi. Dengan cara replikasi ini kita membutuhkan paling tidak 2 buah server yaitu server Master, dimana disana terrjadi perubahan data yaitu Insert (Penambahan), Update (Perubahan) dan delete (Penghapusan). Sedangkan server Slave berfungsi untuk menyamakan data, perubahan data di server master secara otomatis akan merubah data pada server slave, dengan kata lain data pada server slave selalu menyesuaikan (sama) dengan data pada server Master.
Pada server slave, tidak terjadi perintah query insert, update, maupun delete, hanya perintah select saja yang diijinkan. Memang kelihatannya seperti pemborosan, tapi sebetulnya tidak juga karena
- Apabila server master rusak, maka database bisa segera dialihkan ke server slave
- Server slave, bisa digunakan oleh software manajerial yang hanya melihat laporan saja
Langkah-langkah replikasi MySQL pada OS Windows
Sebelumnya download dulu dua buah aplikasi yang saya buat secara khusus yang terdiri dari Master.exe dan Slave.exe, Master.exe harus diinstalkan pada server Master dan Slave.exe harus diinstalkan pada server Slave , yang dapad di download DISINI
Download terlebih dahulu MySQL Administrator yang dapad di dpwnload DISINI
Setting Pada server Master
1. Instalkan Software Master pada Server Master
2. Tambahkan 1 user khusus untuk replikasi, misalnya user : replikasi , password : replikasi
3. Masuk ke data base mysql
4. Berikan perintah query grant replication slave on *.* to replikasi@’ip-slave’ identified by ‘replikasi’;
Ip-slave = ip dari Server Slave (misalnya 192,168.1.69)
5. Buka file my.cnf tambahkan isian berikut pada bagian [mysqld],
log-bin=/var/lib/mysql/mysql-bin.log
server-id=1
binlog-ignore-db=”mysql”
6. Buka Sofware MySQL Adminitraor klik kotak Binary Logfile Name sehingga muncul tanda ceklist, kemudian isi kotak isiannya dengan nama log-bin
6. Matikan MySQL server dengan cara klik tombol
Pada
Hidupkan lagi MySQL Server dengan mengklik tombol
7. Lakukan back-up database yang akan direplikasi pada master dan restore pada server
Slave (proses replikasi hanya bisa bekerja bila struktur data pada Slave sama dengan struktur data pada Master)
8. Buka software Master
Isi Host Masteer, User Master (sebaiknya menggunakan root) dan password,
kemudian klik tombol , sehingga dua kotak terbawah terisi
catat nama file log dan posisinya
Setting Pada Server Slave
1. Salin database Yang di Back Up dari Server Master ke Server Slave
2. Instalkan Slave.exe
3 . Edit file my.cnf tambahkan perubahan berikut pada bagian [mysqld],
server-id = 2
master-host = ip-master (ip dari Server Master)
master-user= replikasi
master-password= replikasi
master-port=3306
matikan MySQL Server
hidupkan MySQL Server
Jalankan Aplikasi Slave.exe
Isi Ip Slave, User Slave, Password, IP Master, User Master, password, Nama File Log, dan Posisi (dua terakhir lihat dari hasil proses Master.exe)
Bila pada status muncul tulisan Connecting to master artinya proses replikasi berhasil. Coba lakukan perubahan data pada server (bisaa berupa insert, update, atau delete), maka data base pada slave pun akan ikut berubah.
Bila ingin mempelajari Kode Program bisa dipelajari disini
Master
Option Explicit
Private Sub Command1_Click()
End Sub
Private Sub Form_Load()
Me.Top = (Info.WorkAreaHeight - Me.Height) / 2
Me.Left = (Info.WorkAreaWidth - Me.Width) / 2
End Sub
Private Sub PushButton1_Click()
On Error GoTo eh
Me.MousePointer = vbHourglass
Set gCnn = New MYSQL_CONNECTION
gCnn.OpenConnection PT1.Text, PT2.Text, PT3.Text, PT4.Text
Me.MousePointer = vbNormal
If gCnn.State = MY_CONN_OPEN Then
Dim pRs As MYSQL_RS
Dim theTemp As String
‘Save record
Set pRs = New MYSQL_RS
SQL = “SHOW MASTER STATUS”
pRs.OpenRs SQL, gCnn
PT5.Text = pRs.Fields(”File”)
PT6.Text = pRs.Fields(”Position”)
Else
MsgBox “Koneksi Ke Data Base MySQL Gagal !”, vbCritical, “Gagal”
End If
Exit Sub
eh:
MsgBox “Koneksi Ke Data Base MySQL Gagal !”, vbCritical, “Gagal”
PT1.Text = “”
PT2.Text = “”
PT3.Text = “”
PT1.SetFocus
Me.MousePointer = vbNormal
End Sub
Private Sub PushButton2_Click()
End
End Sub
Slave
Option Explicit
Private Sub Command1_Click()
End Sub
Private Sub Form_Load()
Me.Top = (Info.WorkAreaHeight - Me.Height) / 2
Me.Left = (Info.WorkAreaWidth - Me.Width) / 2
End Sub
Private Sub PushButton1_Click()
On Error GoTo eh
Me.MousePointer = vbHourglass
Set gCnn = New MYSQL_CONNECTION
gCnn.OpenConnection PT1.Text, PT2.Text, PT3.Text, PT4.Text
Me.MousePointer = vbNormal
If gCnn.State = MY_CONN_OPEN Then
Dim pRs As MYSQL_RS
Dim theTemp As String
‘Save record
Set pRs = New MYSQL_RS
SQL = “SHOW MASTER STATUS”
pRs.OpenRs SQL, gCnn
PT5.Text = pRs.Fields(”File”)
PT6.Text = pRs.Fields(”Position”)
Else
MsgBox “Koneksi Ke Data Base MySQL Gagal !”, vbCritical, “Gagal”
End If
Exit Sub
eh:
MsgBox “Koneksi Ke Data Base MySQL Gagal !”, vbCritical, “Gagal”
PT1.Text = “”
PT2.Text = “”
PT3.Text = “”
PT1.SetFocus
Me.MousePointer = vbNormal
End Sub
Private Sub PushButton2_Click()
End
End Sub
SLAVE
Option Explicit
Private Sub Command1_Click()
End Sub
Private Sub Form_Load()
Me.Top = (Info.WorkAreaHeight - Me.Height) / 2
Me.Left = (Info.WorkAreaWidth - Me.Width) / 2
End Sub
Private Sub PushButton1_Click()
On Error GoTo eh
Me.MousePointer = vbHourglass
Set gCnn = New MYSQL_CONNECTION
gCnn.OpenConnection PT8.Text, PT9.Text, PT10.Text, PT4.Text
Me.MousePointer = vbNormal
If gCnn.State = MY_CONN_OPEN Then
Dim pRs As MYSQL_RS
Dim theTemp As String
‘Save record
Set pRs = New MYSQL_RS
SQL = “STOP SLAVE”
pRs.OpenRs SQL, gCnn
Set pRs = New MYSQL_RS
SQL = “RESET SLAVE”
pRs.OpenRs SQL, gCnn
Set pRs = New MYSQL_RS
SQL = “CHANGE MASTER TO MASTER_HOST=’” & PT1.Text & “‘, MASTER_USER = ‘” & PT2.Text & “‘, MASTER_PASSWORD= ‘” & PT3.Text & “‘,MASTER_LOG_FILE=’” & PT5.Text & “‘,MASTER_LOG_POS=” & PT6.Text & “;”
pRs.OpenRs SQL, gCnn
Set pRs = New MYSQL_RS
SQL = “START SLAVE”
pRs.OpenRs SQL, gCnn
Set pRs = New MYSQL_RS
SQL = “SHOW SLAVE STATUS”
pRs.OpenRs SQL, gCnn
PT7.Text = pRs.Fields(”Slave_IO_State”)
Else
MsgBox “Koneksi Ke Data Base MySQL Gagal !”, vbCritical, “Gagal”
End If
Exit Sub
eh:
MsgBox Err.Number & ” ” & Err.Description, vbCritical, “Error While Connecting”
MsgBox “Koneksi Ke Data Base MySQL Gagal !”, vbCritical, “Gagal”
PT1.Text = “”
PT2.Text = “”
PT3.Text = “”
PT1.SetFocus
Me.MousePointer = vbNormal
End Sub
Private Sub PushButton2_Click()
End
End Sub
SELAMAT MENCOBA DAN SEMOGA BERMANFAAT
Sumber : http://teknologi.kompasiana.com/2010/03/06/replikasi-data-base-mysql-pada-os-windows/?ref=home#comment
Komentar