Anda di halaman 1dari 28

Membuat Replikasi atau Mirror database MySQL

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.

Kemudian kita akan membuat master repikasinya. selanjutnya


klik mengonfigurasikannya.

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.

Tahap selanjunya kita membuat user replikasinya.

buat user sesuai keinginan Anda.

Kemudian kita lihat Status Master replikasinya apakah sudah berjalan.

2. Setting Komputer Repilkasi (Client).


Buat database sesuai database yang ada di SERVER.
Copy server-id ke file my.cnf seperti diatas carannya. Masukan user name replikasinya
yang sudah di buat di komputer server dan masukan IP Address server.

Kita cek kembali Status Slave nya.

Coba Anda lakukan perintah insert , update atau delete pada database server. secara
otomatis komputer repikasi akan menyesuaikan. Mudah bukan .. sekian terima kasih.

Membuat Replikasi Database


MySQL
Posted on 28 December 2011 by AaQbenk

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;

maka perintah diatas akan menampilkan:

+---------------+----------+--------------+------------------+
| File

| Position | Binlog_do_db | Binlog_ignore_db |

+---------------+----------+--------------+------------------+
| mysql-bin.006 | 183

| contohdb

+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)

keluar dengan perintah quit; dari shell mysql.


Ada dua cara agar mysql terduplikasi untuk pertama kali, pertama, dengan
melakukan dump manual database cpntohdb dari Master ke Slave, dan kedua,
dengan perintah LOAD DATA FROM MASTER dari server slave, namun cara kedua
tidak disarankan, senadaikan database kita berkapasitas besar, maka akan banya
terjadi pemborosan proses dan trafic. Untuk itu kita akan menggunakan cara
pertama yaitu dengan mendump database Master (export ke .sql) ke database Slave
(import .sql), tool yang bisa digunakan seperti biasa bisa menggunakan tool yang
anda gunakan, misal phpMyAdmin (export import .sql).
Jika anda merasa tidak nyaman dengan banyak jendela yang aktif, tetaplah di
console shell untuk melakukan export dump dan ketikan:
mysqldump -u root -p<password> opt contohdb > contohdb.sql

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.

Cara Replikasi Database Di MySQL

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.

Pada Komputer Slave Server :


Cari file my.ini pada Komputer Slave Server. Sama seperti pada komputer Master
Server, filemy.ini saya berada pada path C:\Program Files\MySQL\MySQL Server
5.1\my.ini. Bila sudah buka dengan notepad lalu tambahkan dibawah [mysqld]
beberapa setingan dibawah ini :
server-id=2
master-host=IP-MASTER SERVER
master-user=user_slave
master-password=passwd_slave
master-connect=60
replicate-do-db=nama_database_replication
Yang terpenting adalah samakan nama database replikasinya dengan setingan pada
Master Server dan server-id mesti berbeda valuenya dengan server-id pada setingan
di Master Server.
Sesuaikan juga user_slave_server dan passwordnya yang telah kita buat pada
langkah diatas.
Lengkapnya bisa dilihat disetingan kami pada gambar dibawah ini:

[ 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.

Database Mirroring Pada SQL Server 2008

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 :

BACKUP DATABASE Ax_2009_Live


TO DISK = \\10.1.1.28\BACKUP_DB\DATA\Ax_2009_Live.bak
WITH FORMAT
GO

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

6. Selanjutnya kita akan menjalankan langkah-langkah Database Mirroring. Pada


server Principal klik kanan database yang akan di mirror -> Pilih Task -> Mirror.

7. Dari langkah tersebut diatas, maka akan tampil menu mirroring.

8. Dari menu mirror ini, pilih Configure Security.

9. Karena kita menjalankan failover secara manual, maka kita tidak perlu memakai
server Witness. Pada tampilan ini, pilih No.

10. Tentukan server yang akan dijadikan sebagai server Principal

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.

13. Proses Configure Security untuk mirror selesai.

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.

17. Selanjutnya kita akan melakukan Failover, dimana dilakukan perpindahan


database dari server principal ke server mirror. Sehingga kedua server tersebut akan
berubah dari Principal ke Mirror begitu juga sebaliknya. Untuk melakukan Failover
manual, masuk ke menu mirror dan pilih tombol Failover. Maka akan tampil dialog
box peringatan mengenai perpindahan setelah proses Failover.

18. Jika proses Failover berjalan sukses, maka database akan berpindah ke server
yang sebelumnya sebagai Mirror.

19. Untuk memastikan lagi, jalankan Mirror Monitoring.

Proses Database Mirroring dan Failover selesai. Semoga bermanfaat

Anda mungkin juga menyukai