jadi tujuan dari membuat replikasi database salah satunya adalah untuk membuat salinan/backup database dari satu mesin (pc, laptop atau semacamnya) ke mesin (pc, laptop, atau semacamnya) yang lain.
perbedaannya replikasi dan backup database biasa terletak pada otomatisasi backup dan secara realtime (ketika ada perubahan pada database utama maka secara langsung database salinannya akan mengikuti perubahaannya).
feature replikasi ini baru ada di database mysql versi 5.x.x, jadi udah pastinya donk... eksperimen yang ditulis disini pake mysql versi 5.x.x ^_^. Untuk liat spesifikasi database dan operating system yang dipake penulis, bisa diliat diakhir tulisan ini.
OKE, CARA BIKINNYA DIMULAI
Pertama adalah menyiapkan menyiapan 2 mesin (pc, laptop, atau semacamnya), mesin pertama digunakan untuk database utama atau biasa disebut master, dan mesin yang kedua digunakan untuk database salinan atau biasa disebut slave.
Tahap kedua adalah, instal dimasing2 mesin (master dan slave), database mysql nya dan tentunya operating systemnya , dengan direkomendasikan operating systemnya sama dan versi mysql nya sama atau versi mysql di master lebih baru dari yang di slave.
Tahapan selanjutnya adalah melakukan konfigurasi database di master, tapi sebelumnya kita asumsikan lebih dulu kalau database yang akan di replikasi bernama repli_db (jadi database itu udah dibikin dulu atau sudah ada berikut dengan tabel2 nya di master), dan operating systemnya menggunakan linux ubuntu
1. buka file my.cnf (biasanya terletak di /etc/mysql/my.cnf).
2. tambahkan setting2 master di bawah ini
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db = repli_db
server-id = 1
penjelasan singkatnya begini:
log_bin = alamat untuk menyimpan log binari mysql
binlog-do-db = nama database yang akan direplikasi
server-id = id dari mesin master
3. membuka akses agar yang bisa mengunakan database tidak hanya dari locahost saja atau ip 127.0.0.1
ubah baris
bind-address = 127.0.0.1
menjadi
#bind-address = 127.0.0.1
4. restart mysql
exit;
sudo /etc/init.d/mysql restart;
5. masuk ke mysql sebagai root
sudo mysql -uroot -ppassword_root_mu
6. membuat akses slave untuk username slave_user dari ip komputer apa saja dengan passwordnya pass
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
7. memberikan akses agar username slave_user dapat mengunakan databases
GRANT ALL ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
8. catat status master dari database repli_db
USE repli_db;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000119 | 268 | repli_db | |
+------------------+----------+--------------+------------------+
UNLOCK TABLES;
Konfigurasi di sisi master udah selesai, sekarang kita lanjut ke konfigurasi disisi slave
Pertama adalah menyiapkan menyiapan 2 mesin (pc, laptop, atau semacamnya), mesin pertama digunakan untuk database utama atau biasa disebut master, dan mesin yang kedua digunakan untuk database salinan atau biasa disebut slave.
Tahap kedua adalah, instal dimasing2 mesin (master dan slave), database mysql nya dan tentunya operating systemnya , dengan direkomendasikan operating systemnya sama dan versi mysql nya sama atau versi mysql di master lebih baru dari yang di slave.
KONFIGURASI DI SISI MASTER
1. buka file my.cnf (biasanya terletak di /etc/mysql/my.cnf).
2. tambahkan setting2 master di bawah ini
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db = repli_db
server-id = 1
penjelasan singkatnya begini:
log_bin = alamat untuk menyimpan log binari mysql
binlog-do-db = nama database yang akan direplikasi
server-id = id dari mesin master
3. membuka akses agar yang bisa mengunakan database tidak hanya dari locahost saja atau ip 127.0.0.1
ubah baris
bind-address = 127.0.0.1
menjadi
#bind-address = 127.0.0.1
4. restart mysql
exit;
sudo /etc/init.d/mysql restart;
5. masuk ke mysql sebagai root
sudo mysql -uroot -ppassword_root_mu
6. membuat akses slave untuk username slave_user dari ip komputer apa saja dengan passwordnya pass
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
7. memberikan akses agar username slave_user dapat mengunakan databases
GRANT ALL ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
8. catat status master dari database repli_db
USE repli_db;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000119 | 268 | repli_db | |
+------------------+----------+--------------+------------------+
UNLOCK TABLES;
Konfigurasi di sisi master udah selesai, sekarang kita lanjut ke konfigurasi disisi slave
KONFIGURASI DI SISI SLAVE
1. buka file my.cnf (biasanya terletak di /etc/mysql/my.cnf).
2. ketikkan konfigurasi slave (belum termasuk setting replikasinya) dibawah ini
server-id=2
master-host=192.168.10.91
master-user=slave_user
master-password=pass
master-connect-retry=30
replicate-do-db=repli_db
penjelasan singkatnya begini:
server-id = id dari mesin slave
master-host = ip address komputer/mesin master
master-user = user name untuk akses komputer/mesin master
master-password = password untuk akses komputer/mesin master
master-connect-retry = waktu jeda (satuan detik) untuk melakukan koneksi ke master bisa conection ke master putus
replicate-do-db = nama database yang di replikasi
3. restart mysql
exit;
sudo /etc/init.d/mysql restart;
4. masuk ke mysql sebagai root
sudo mysql -uroot -ppassword_root_mu
5. sekarang inisialisai data atau mengambil data untuk yang pertama kalinya dari master ke slave.
LOAD DATA FROM MASTER;
bila berhasil maka di slave akan terbuat database repli_db beserta isinya (tabel dan datanya).
6. sekarang setting replikasinya (masih di console)
SLAVE STOP;
CHANGE MASTER TO MASTER_HOST=’192.168.10.91′,
MASTER_USER=’slave_user’,
MASTER_PASSWORD=’pass’,
MASTER_LOG_FILE=’mysql-bin.000119,
MASTER_LOG_POS=268;
SLAVE START;
isi dari parameter MASTER_LOG, MASTER_LOG_FILE, MASTER_LOG_POS mengambil dari status master dari mesin/komputer master.
oke... konfigurasi di slave sudah selesai, dan seharusnya semua berjalan lancar....
untuk melihat status slave bisa menggunakn perintah
SHOW SLAVE STATUS;
nb:
spesifikasi komputer/mesin master yang digunakan :
2. ketikkan konfigurasi slave (belum termasuk setting replikasinya) dibawah ini
server-id=2
master-host=192.168.10.91
master-user=slave_user
master-password=pass
master-connect-retry=30
replicate-do-db=repli_db
penjelasan singkatnya begini:
server-id = id dari mesin slave
master-host = ip address komputer/mesin master
master-user = user name untuk akses komputer/mesin master
master-password = password untuk akses komputer/mesin master
master-connect-retry = waktu jeda (satuan detik) untuk melakukan koneksi ke master bisa conection ke master putus
replicate-do-db = nama database yang di replikasi
3. restart mysql
exit;
sudo /etc/init.d/mysql restart;
4. masuk ke mysql sebagai root
sudo mysql -uroot -ppassword_root_mu
5. sekarang inisialisai data atau mengambil data untuk yang pertama kalinya dari master ke slave.
LOAD DATA FROM MASTER;
bila berhasil maka di slave akan terbuat database repli_db beserta isinya (tabel dan datanya).
6. sekarang setting replikasinya (masih di console)
SLAVE STOP;
CHANGE MASTER TO MASTER_HOST=’192.168.10.91′,
MASTER_USER=’slave_user’,
MASTER_PASSWORD=’pass’,
MASTER_LOG_FILE=’mysql-bin.000119,
MASTER_LOG_POS=268;
SLAVE START;
isi dari parameter MASTER_LOG, MASTER_LOG_FILE, MASTER_LOG_POS mengambil dari status master dari mesin/komputer master.
oke... konfigurasi di slave sudah selesai, dan seharusnya semua berjalan lancar....
untuk melihat status slave bisa menggunakn perintah
SHOW SLAVE STATUS;
nb:
spesifikasi komputer/mesin master yang digunakan :
- operating system Linux Ubuntu 8.10 (Intrepid)
- MySQL versi 5.1.22
- operating system Linux Ubuntu 8.04 (HardyHeron)
- MySQL versi 5.0.51
kalo master nya suse 10.1 dan slave nya ubuntu 8.04 bisa gk ya,..mohon ksih penjelasan nya ya pak,.thx
ReplyDeleterekomendasi nya os untuk master dan slave di rekomendasi-kan sama....
ReplyDeletetp kalau di coba bisa... asalkan versi mysql di master harus lebih baru atau sama dari slave
cek, benarkah masternya yg lebih baru, bukannya slave yg versinya hrus lebih baru krna slave bakal mengkitu versi dari master
Deletekalau di master nya ada proses "transaction", akan berpengaruh nggak ke slave nya?
ReplyDeleteblok transaksi akan melakukan commit bila saat proses di dalam blok transaksi tersebut tidak terjadi error...
ReplyDeletesedangkan SLAVE hanya mengejar/menyamakan dengan yg ada di MASTER...
jadi walaupun MASTER pk transaction atau kagak... ngak masalah bwt SLAVE
itu cuma bisa d u buntu doank..?
ReplyDeleteklo d windows gmn..?
apakah sama syntax2 na..?
pake windows cofiguration mysqlnya sama aja dengan yang di ubuntu kok.
ReplyDeletesalam kenal mas ... mas klo di mysql ada tipe replikasi mastersite ga mas?... artinya semua posisi sama tuh mas.... gak ada table master or slave... semuanya posisinya sama....
ReplyDeletemungki clustering bisa membantu seperti yang ada dilink dibawah ini
ReplyDeletehttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-replication-multi-master.html
artikel nya bagus ..
ReplyDeletenumpang tanya nih, bisakah membuat replikasi dengan lebih dari satu master ? ..
contoh : ada 2 server master yang mereplikasi ke satu server slave.
terima kasih.
fandi/fkun9@yahoo.com
setahu saya klw 2 master langusng ke 1 slave tidak bisa/belum bisa dilakukan oleh mysql.
ReplyDeletetetapi bila skema nya menjadi.
co-master to 1 slave bisa dilakukan..
seperti yang tulis oleh Patrick Galbrait di
http://capttofu.livejournal.com/1752.html?view=157144#t157144
kalo lebih dari satu database gmn ya cara nya mas,.mohon pencerahan nya,. saya coba slave nya pake windows
ReplyDeletepada my.cnf pada master tuliskan nama-nama databasenya seperti dibawah ini :
ReplyDeletebinlog-do-db=db_1
binlog-do-db=db_2
binlog-do-db=db_3
kemudian pada my.cnf slave tuliskan seperti ini :
replicate-do-db=db_1
replicate-do-db=db_2
replicate-do-db=db_3
lengkapnya bisa liat di posting ini : http://gnusys.net/kb/index.php/2009/06/mysql-master-slave-replication-of-multiple-databases/
mas mau tanya kalau mau update database dari lokal ke server dapatkah menggunakan teknik replikasi multimaster ini?? lalu apakah teknik multi master ini dapat digunakan untuk aplikasi toko online? thx mas
ReplyDeletebisa mas.. dan multimaster ini adalah update dua arah mas... untuk kasus toko online bisa juga di implementasikan...
ReplyDeletesaya sedang skripsi, rencana saya mau membuat sinkronisasi database.. sinkronisasi ini dilakukan supaya pekerjaan tidak dilakukan 2x, misal saya update database lokal, maka database server akan terupdate juga.. kira2 bagaimana membuatnya yah mas? lalu implementasinya pada bidang apa?? hehehehe.. maaf mas merepotka.. mohon pencerahannya..
ReplyDeleteuntuk singkronisasi dua arah setting dan skema-nya seperti yang di tulis di http://capttofu.livejournal.com/1752.html?view=157144#t157144,
ReplyDeleteimplementasinya dpat dilakukan berbagai macam bidang, yang severnya tersebar, seperti data transaksi penjualan di kantor cabang yang kemudian di singkrokan ke kantor pusat,
wah saya baca mtulisan di atas.. sama saya sedang mengalami kesulitan, jika saya mempunyai sebuah toko online.. mis komputer.. jika saya ingin update harga komputer melalui local host bagaimana caranya ya?? kalo replikasi kan untuk back up??
ReplyDeletekalo sistem operasinya pake windows xp sp 2 gimana mas.... please
ReplyDeletepake windowx XP sepertinya bisa dan cara konfugiruasi pada mysql-nya sama saja... Apbila master-nya menggunakan window xp maka untuk slave sebaiknya windows xp juga..
ReplyDeleteom dendie saya sudah mencoba seperti cara yg diatas ... cuma saya menggunakan windows xp, muncul error seperti ini untuk server masternya :
ReplyDeleteSlave I/O thread: connected to master 'root@10.2.5.85:3306',replication started in log 'mysql-log.000006' at position 268
Slave I/O: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). Error_code: 1593
Slave I/O thread exiting, read up to log 'mysql-log.000006', position 268
udah cari2x di mbah google belum ada penyelesaiannya om ... mohon bantuannya yah . . .
kalo diliat dari keterangan diatas berarti server id nya bentrok kan yah? tapi saya udah bedain antara server id master dengan server id slave seperti contoh yg om dendie berikan ... tapi keterangan errornya seperti itu apa itu bug yah di windows ?
ReplyDeletecoba di cek dulu sever id di masing-masing mysql server nya untuk memeriksa apakah sudah sama dengan konfigurasi telah diset atau belum, caranya adalah masuk ke consol mysql kemudian ketikan perintah SHOW VARIABLES LIKE 'server_id';
ReplyDeletethanks mas atas infonya, sudah saya coba berhasil
ReplyDeletemas saya sudah lakukan spt langkah diatas, saat melakukan perintah di slavenya yaitu LOAD DATA FROM MASTER;
ReplyDeletekeluar error
ERROR 1218 (08S01): Error connecting to master: Master is not configured
padahal sudah saya konfigurasikan di master maupun slave.
mohon pencerahannya
mungkin koneksi ke database master nya terputus.. coba periksa koneksinya.
ReplyDelete1. pada console ketik "ping [alamat ip mysql master]"
2. pada console ketikan mysql -u[username] -p[password] -h[alamat ip mysql master]
Saya menggunakan replication untuk 3 komputer. dengan system kerja masing-masing komputer sebagai master sekaligus slave.
ReplyDeleteGambarannya :
A ambil data di B, B Ambil data di C, C ambil data di A.
Masalahnya adalah, saat saya edit :
- di A, C berubah tapi B tidak berubah.
- di B, A berubah tapi C tidak berubah,
- di C, B berubah tapi A tidak berubah.
Mohon bantuan informasinya ...
Replikasi pada proses nya adalah menyamakan kondisi binlog slave dengan yang ada pada master.
ReplyDeleteDan salah tujuan dari replikasi adalah untuk backup data dan pada slave hanya diperuntukan proses read saja.
apabila aristektur nya seperti diatas maka hal tersebut menjadi tidak jelas antar yang berperan sebagai master dan yang berperan sebagai slave.
Untuk kebutuhan seperti diatas, maka yang diperlukan adalah mysql clustering. seperti yang ditunjukan pada link dibawah ini.
http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-replication-multi-master.html
mas, mw tanya? klw contoh cara koneksi antar 2 komputer tersebut gmn mas....
ReplyDeleteminta pencerahannya mas...
contoh cara koneksi 2 komputer ???
ReplyDeleteApakah yang Anda maksud koneksi adalah setting 2 buah komputer di LAN (Local Area Network). betul begitu ya...
sepertinya link ini bisa membantu http://www.webtkj.co.cc/2011/03/teknik-konfigurasi-lan-di-windows.html
pagi mas dendie.
ReplyDeletesaya punya server pulsa yg harus hidup 24jam non stop. dan saya membuat replikasi untuk web reportnya.
yg mau saya tanyakan,
kata si programernya, kompt replikator harus hidup juga. dan seandainya kompt tersebut mati/restart/tidak berfungsi,maka harus membuat replikasi lagi. apa benar begitu,mas?
trims.
pagi juga mas.. idealnya memang komputer replicator nya harus hidup, karena proses komputer replikasi selalu mengejar perubahan yang terjadi pada komputer master berdasarkan log binary komputer master. Klw komputer replicator nya mati/restart ya tidak apa-apa dan komputer replicator akan mengerjar kembali ke tertinggalannya. mungkin yang menyebabkan tidak berfungsi karena konfigurasi replikasi nya hilang ketika terjadi restart pada komputer replikatornya.
ReplyDeletesore mas dendie. trims atas pencerahannya....
ReplyDeleteberarti intinya tidak apa-apa bila kompt replikasi mati,bukan?
trims.salam kenal
iya betul... salam kenal kembali :)
ReplyDeleteartikel yang bagus.. xixixi... kalo komputrer master mati.. terus kuganti ip slave.. jadi database replika slave ku pakai.. jadi langsung bisa jadi master tidak ya mas... jadi tinggal ganti ip database gitu.. terus setelah komputer master hidup gimana nyamain database yang ada di slave... janga katakan manual yap.. xixi makasih.
ReplyDeleteTujuan dari membuat master dan slave adalah untuk melakukan backup data secara realtime.
DeleteDan slave hanya digunakan untuk proses read data saja.
Jadi apabila menginginkan setiap node adalah bisa melakukan read dan write kemudian melakukan singkorniasi setiap node secara otomatis, maka teknologi yang dapat digunakan adalah bukan MySQL Replikasi Database tetapi dapat menggunakan MySQL Clustering.
This comment has been removed by the author.
ReplyDeleteKalo replikasi multi master menggunakan mysql pada windows bisa bagi infonya?
ReplyDeleteLebih spesifik kalo bleh msi awam soalnya
Hehe
mas replikasi 2 arah 3 server bisa gk?
ReplyDeleteyang 3 arah ada gan replikasi mysql mariaDB
ReplyDeletemas, kalo konfigurasi master-master butuh auto_increment gak sih? makasih
ReplyDelete1 master 2 slave gimana gan, bisa gak...!
ReplyDelete