Seting Replikasi MariaDB Master-Slave di Ubuntu 18.04 LTS

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

  1. Dua buah server dengan OS Ubuntu 18.04 LTS
  2. db-master : 198.168.100.54
  3. db-slave : 192.168.100.55
  4. 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.

Ini tampilan awal sebelum membuat database.
Ini adalah hasil setelah database dibuat.

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