Master to Master Replication adalah sebuah metode dalam database kita dapat mengcopy isi database dari suatu server MySQL ke satu atau beberapa server MySQL yang lain.
- Memecah pekerjaan antara beberapa MySQL server.
Server MySQL utama menjalankan proses bisnis, server MySQL hasil replikasi menjalankan analisa data. Dengan cara ini saat MySQL replikasi melakukan analisa data yang mungkin menguras memory dan proses tidak akan mempengaruhi proses bisnis yang dijalankan. - Realtime backup
Hasil MySQL Replication bisa menjadi backup yang realtime. Meskipun demikian kita tetap harus membuat backup yang bersifat periodik.
Working Linux OS like CentOS 6.9
Haproxy Server address is : 192.168.67.135
Haproxy Server address is : 192.168.67.135
Master and Master work in two node
Master1 IP Address is: 192.168.67.139
Master2 IP Address is: 192.168.67.140
Database : kampus
Langkah 1 Server Master 1
Install Mysql Server
root@masterDB# yum install mysql-server mysql
Edit konfigurasi MySQL di /etc/my.cnf dan tambahkan entri berikut
[mysqld] log-bin=mysql-bin binlog-do-db=kampus server-id=1
Restart MySQL
root@masterDB# /etc/init.d/mysqld restart
Buat DataBase
mysql> create database kampus; mysql> create table pcr ( > id int(11) primary key, > nama varchar(20));
Langkah selanjutnya kita akan membuat user agar replication client bisa terkoneksi
# mysql -u root -p Passowrd: mysql> GRANT REPLICATION SLAVE ON *.* TO 'harumin1'@'%' IDENTIFIED BY 'harumin1'; mysql> FLUSH PRIVILEGES;
Selanjutnya lihat status mysql server sebagai master
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 106 | kampus | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
Langkah 2 Master 2
Lakukan hal yang sama diserver Master 2
[mysqld] log-bin=mysql-bin binlog-do-db=kampus server-id=2
Restart MySQL
root@masterDB2# /etc/init.d/mysqld restart
Buat Databse yang serupa dengan Master1
mysql> create database kampus; mysql> create table pcr ( > id int(11) primary key, > nama varchar(20));
Buat user agar replication client bisa terkoneksi
# mysql -u root -p Passowrd: mysql> GRANT REPLICATION SLAVE ON *.* TO 'harumin1'@'%' IDENTIFIED BY 'harumin1'; mysql> FLUSH PRIVILEGES;
Selanjutnya lihat status mysql server sebagai master
mysql> show master status -> ; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000005 | 567 | kampus | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
Langkah berikut merupakan inti dari replication, kita akan melakukan setting bahwa server-2 merupakan Replication dari server-1. Opsi yang kita masukkan dibawah ini adalah keterangan yang ada di server 1 baik IP, log file dan posisitionnya kita sesuaikan dengan yang di server 1. Settingnya di mysql Master 2
mysql> CHANGE MASTER TO MASTER_HOST='192.168.67.139', -> MASTER_USER='repl_user', -> MASTER_PASSWORD='secretpassword', -> MASTER_LOG_FILE='mysql-bin.000002', -> MASTER_LOG_POS=106;
Langkah berikut merupakan inti dari replication, kita akan melakukan setting bahwa server-1 merupakan Replication dari server-2. Opsi yang kita masukkan dibawah ini adalah keterangan yang ada di server 2 baik IP, log file dan posisitionnya kita sesuaikan dengan yang di server 1. Settingnya di mysql Master 1
mysql> CHANGE MASTER TO MASTER_HOST='192.168.67.140', -> MASTER_USER='repl_user', -> MASTER_PASSWORD='secretpassword', -> MASTER_LOG_FILE='mysql-bin.000005', -> MASTER_LOG_POS=465;
Langkah terakhir lakukan di Server Master1 dan Server Master 2
mysql> SLAVE START; mysql> show slave status \G
Konfigurasi Haproxy di haprovy.cfg --> vi /etc/haproxy.cfg
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt # #--------------------------------------------------------------------- #--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global log 127.0.0.1 local2 info chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 256 maxsslconn 256 user haproxy group haproxy daemon defaults # set "mode tcp" for Layer4 mode tcp log global timeout connect 10s timeout client 30s timeout server 30s # define frontend and backend servers frontend mysql-in bind *:3306 default_backend backend_servers backend backend_servers balance roundrobin server db01 192.168.67.137:3306 check server db02 192.168.67.33:3306 check
output :
mysql> slave start -> ; Query OK, 0 rows affected, 1 warning (0.00 sec)
Uji testing insert data di Master 1. Seharusnya di Master2 akan otomatis update.
Tidak ada komentar:
Posting Komentar