Pada pembahasan kali ini saya akan coba menjelaskan beberapa replikasi database MySQL dengan metode master-master(kadang disebut aktif-aktif). Singkatnya membuat 2 server database mysql yang saling sinkron sehingga data didalamnya sama.
Alasan menerapkan replikasi pada database server adalah agar ketersediaan database tinggi, jadi ketika salah satu node mati maka ketersediaan database akan tetap ada ditangani oleh node yang masih hidup.
Pada contoh kasus kali ini kita akan menggunakan:
- Server A : 192.168.0.100
- Server B : 192.168.0.101
OS : Ubuntu 16.04 Lts (Xenial)
=> Install MySQL
$sudo apt-get update $sudo install mysql-server mysql-client -y
=> Pastikan service mysql dengan status running, dan saran jika ingin menjalankan mysql pada saat boot/server dinyalakan dapat menggunakan
$sudo systemctl enable mysql
=> Modifikasi konfigurasi MySQL
Pada langkah ini kita dapat menambahkan code-code dibawah pada file “/etc/mysql/my.cnf” atau
membuat baru file konfigurasi pada folder “/etc/mysql/mysqld/conf.d/mysql-rep.cnf”
Pada kasus ini saya membuat file baru pada tiap server
$sudo vi /etc/mysql/mysql.conf.d/mysql-rep.cnf
Server A
[mysqld]
bind-address = 192.168.0.100
server_id = 1
log_bin = /var/log/mysql/mysql-bin.log
log_bin_index = /var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index
expire_logs_days = 10
max_binlog_size = 100M
binlog-format = row
log_slave_updates = 1
auto-increment-offset = 1
auto-increment-increment = 2
Server B
[mysqld]
bind-address = 192.168.0.101
server_id = 2
log_bin = /var/log/mysql/mysql-bin.log
log_bin_index = /var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index
expire_logs_days = 10
max_binlog_size = 100M
binlog-format = row
log_slave_updates = 1
auto-increment-offset = 2
auto-increment-increment = 2
=> Buat user mysql dan beri spesifik akses
Login mysql untuk setiap server jalankan perintah
$mysql -u root -p
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'XXXX' IDENTIFIED BY 'Password';
Makna 'XXXX' adalah IP/Hostname dari server lawan dan code grant tersebut berfungsi untuk membuat user 'replication' serta memiliki akses untuk diakses dari alamat lawan.
Pastikan bahwa user 'replication' dapat mengakses mysql server lawan.
$mysql -ureplication -p -h 'XXXX' -P 3306
$mysql -ureplication -p -h 'XXXX' -P 3306
=> Konfigurasi Database Replikasi
- Pada server A login ke mysql dan lihat master status
Informasi master database ini akan digunakan berikutnya pada server lawan.
Pada server B login ke mysql dan assign mysql server lawan sebagai Master dengan cara:
- Pada server B login ke mysql dan lihat master status
Pada server A login ke mysql dan assign mysql server lawan sebagai Master dengan cara:
Setelah langkah-langkah tersebut, maka kedua database server tersebut telah sinkron. Tes replikasi database dengan create database di server A, lalu cek database tersebut apakah sudah ada di server B
Server A
Server B
Pada server B login ke mysql dan assign mysql server lawan sebagai Master dengan cara:
mysql> STOP SLAVE;
mysql> CHANGE MASTER TO master_host='192.168.0.100', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000012', master_log_pos=154;
mysql> START SLAVE;
- Pada server B login ke mysql dan lihat master status
Pada server A login ke mysql dan assign mysql server lawan sebagai Master dengan cara:
mysql> STOP SLAVE;
mysql> CHANGE MASTER TO master_host='192.168.0.101', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000004', master_log_pos=154;
mysql> START SLAVE;
Server A
mysql> create database test;
mysql> show databases;
Hasil yang tampil seharusnya database test ada di daftar database pada server B. Demikianlah cluster database MySQL master-master dari saya, semoga bermanfaat.
Sumber:
https://www.linode.com/docs/databases/mysql/mysql-master-master-replication
Sumber:
https://www.linode.com/docs/databases/mysql/mysql-master-master-replication
No comments:
Post a Comment