Category 6

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 root@192.168.1.2:/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...
Share on Google Plus

About cmiNk

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

2 komentar: