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

om bisa kontak nya ?
BalasHapusom bisa minta kontak nya?
BalasHapus