Setelah sebelumnya saya membuat postingan tentang loadbalancing, kali ini saya akan memposting tentang cara melakukan replikasi database yaitu mariadb dengan konfigurasi master-slave.
Peralatan yang perlu disiapkan yaitu
- Dua buah server dengan OS Ubuntu 18.04 LTS
- db-master : 198.168.100.54
- db-slave : 192.168.100.55
- MariaDB
Langkah pertama install dulu mariadb di kedua server
sudo apt-get update -y
sudi apt-get install mariadb-server mariadb-client -y
Setelah menginstal MariaDB, jalankan perintah berikut untuk mengamankan instalasi MariaDB:
mysql_secure_installation
Lalu isi seperti berikut
Enter current password for root (enter for none): Press Enter
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Pada langkah ini proses installasi mariadb pada server sudah selesai,
Proses selanjutnya melakukan konfigurasi database pada master server. Kita harus mengaktifkan logging dan replikasi biner di server master, dengan melakukan editing pada file berikut.
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Temukan baris bind-address dan ubah nilainya menjadi 0.0.0.0 untuk memungkinkan koneksi masuk.
bind-address = 0.0.0.0
Selanjutnya, tambahkan baris berikut di akhir file:
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
Simpan dan lakukan restart mariadb,
systemctl restart mariadb
Langkah selanjutnya kita perlu membuat user replikasi, yang nantinya akan digunakan oleh slave server login ke master dan meminta log biner.
Login ke mariadb, dengan perintah berikut
mysql -u root -p
Selanjutnya buat user dengan perintah berikut
MariaDB [(none)]> CREATE USER 'replikasi-user'@'%' identified by 'w123456w';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'replikasi-user'@'%';
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
Kemudian cek status master server dengan perintah berikut
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 747 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> exit;
Untuk lebih jelas mengenai perintah diatas, bisa lihat pada lampiran dibawah ini.

Catatan : Harap diingingat setingan File dan Posisition yang tampil pada informasi diatas, ini akan diperlukan ketika melakukan konfigurasi pada slave server. Pada proses ini konfigurasi pada master server sudah selesai.
Langkah selanjutnya kita setup pada slave server.
Ubah file seperti yang dilakukan pada master server, bedanya pada slave server ini server-id kita set menjadi 2.
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Temukan baris bind-address dan ubah nilainya menjadi 0.0.0.0 untuk memungkinkan koneksi masuk.
bind-address = 0.0.0.0
Selanjutnya, tambahkan baris berikut di akhir file:
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
Setelah itu simpan dan restart mariadb.
systemctl restart mariadb
Selanjutnya login ke mariadb, mengatur slave server untuk replikasi master server.
root@db-slave:~# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.1.47-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST = '192.168.100.54', MASTER_USER = 'replikasi-user', MASTER_PASSWORD = 'w123456w', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 747;
Query OK, 0 rows affected (0.09 sec)
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
Setelah itu cek status slave server dengan perintah berikut
MariaDB [(none)]> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.100.54
Master_User: replikasi-user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 327
Relay_Log_File: mysql-relay-bin.000003
Relay_Log_Pos: 615
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 327
Relay_Log_Space: 1201
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: conservative
1 row in set (0.00 sec)
Sampai disini proses seting replikasi sudah selesai, langkah selanjutnya adalah pengujian. Apakah setingan yang dijerjakan diatas bekerja atau tidak.
Disini saya akan membuat database pada server master dengan nama database “rahmat” untuk lebih jelasnya silahkan lihat lampiran dibawah.


Dari hasil diatas bisa disimpulkan pada saat proses pembuatan database di master server otomatis slave server akan membaca hasil dari master server. Artinya konfigurasi yang dikerjakan sebelumnya sudah berhasil.
Selamat mencoba, 🙂
Leave a Reply