Replikasi Database Mysql Pada Ubuntu Server

Untuk kesekian kali saya lupa cara me-replicate database mysql di ubuntu server , padahal udah belasan kali saya melakukan hal ini.. setiap kali saya mao replicate dan stuck , googling sana-sini dulu nyari referensi tutorial.. terkadang hasil googlingan juga ngga membantu (banyak source yang saya ikutin malah salah).
Replicate yang di gunakan adalah master to slave , fungsinya server master menduplicate datanya ke server slave , sehingga server slave bisa digunakan sebagai server database backup
Tutorial berikut udah di coba di mysql versi 5 keatas , ubuntu server 10.04 lts maupun ubuntu server 12.04 lts dengan sukses (mudah2n di versi ubuntu 13.04 dan selanjutnya juga sama)
Persiapan awal :
  • Install ubuntu server di kedua server
  • Install Mysql di kedua server

Server 1 ( Master , ip : 192.168.1.1 )

Edit file my.cnf biasanya berada di : /etc/mysql/my.cnf, pada baris bind-address berikan comment-line untuk men-disable

[...] # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 [...]

  • Restart mysql-nya
  • Masuk ke command-line mysql menggunakan terminal

mysql -u root -p

Jalankan 3 query berikut :

GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'slave_password'; FLUSH PRIVILEGES; quit;

Edit file config mysql , my.cnf seperti berikut :

[...] # The following can be used as easy to replay backup logs or for replication. # note: if you are setting up a replication slave, see README.Debian about # other settings you may need to change. server-id = 1 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M binlog_do_db = exampledb [...]

  • Restart mysql-nya
  • Masuk lagi ke command-line mysql
  • jalankan 3 query berikut :

USE exampledb; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;

Query Show Master status akan men-display informasi yang kita perlukan , catet hasil displaynya file dan position.. kira-kira hasilnya seperti ini :

mysql> SHOW MASTER STATUS; +------------------+----------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+ | mysql-bin.000001 | 1467 | exampledb | | +------------------+----------+ 1 row in set (0.00 sec)

Penting !!! , Terminal yang tadi jangan di tutup ! Karena kita bakalan melakukan dump database untuk snapshotnya..

  • Buka terminal baru atau boleh menggunakan mysql-client , dump database exampledb-nya
  • Transfer file ke server 2 (ip : 192.168.1.2)

cd /tmp mysqldump -u root -p --opt exampledb > snapshot.sql scp snapshot.sql [email protected]:/tmp

  • setelah beres , kembali ke terminal yang tadi belom ketutup
  • Unlock , kemudian quit .. terminal tadi boleh di tutup

UNLOCK TABLES; quit;

Server 2 ( Slave , ip : 192.168.1.2 )

  • Edit file my.cnf , seperti berikut :

[...] server-id=2 master-connect-retry=60 replicate-do-db=exampledb [...]

 

  • Restart mysql-nya
  • Buat database baru (kosong) , diserver slave

mysql -u root -p CREATE DATABASE exampledb; quit;

Import hasil dump di server master tadi ke database kosong di server slave

mysql -u root -p exampledb < snapshot.sql

  • Setelah selesai connect lagi command line mysql
  • Jalankan query berikut , sesuaikan sama hasil display master status di server master

mysql -u root -p CHANGE MASTER TO MASTER_HOST='192.168.1.1', MASTER_USER='slave_user', MASTER_PASSWORD='slave_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1467;

setelah itu di command line mysql , jalankan slave-nya

START SLAVE;

setelah itu quit dari command-line mysql

quit; 

Untuk check master-slave status jalankan perintah berikut di server-slave command-line mysql :

SHOW SLAVE STATUS;

Selesai...

Super Admin

Lorem ipsum dolor sit amet consectetur adipiscing elit fusce eget turpis pulvinar interdum tellus blandit imperdiet velit.