Skip to content

Replication Master Slave MariaDB on Debian 11

debianmysql

8 min read


Pendahuluan

Data center yang besar pasti akan menyalin data dari satu server basis data Master ke server basis data lainnya Slave. Metode ini dinamakan Replication yang digunakan untuk meningkatkan ketahanan sistem dan meningkatkan kinerja aplikasi dengan memperbolehkan beberapa server untuk membaca data dari satu sumber. Thumbnail

Pada artikel kali ini kita akan mempraktekkan replication master-slave menggunakan MariaDB, sebelum itu apa sih MariaDB itu? Jadii...

MariaDB merupakan sebuah sistem manajemen basis data relasional RDBMS yang merupakan fork dari MySQL. MariaDB dikembangkan oleh perusahaan yang didirikan oleh salah satu pendiri MySQL, Michael Widenius. MariaDB mencakup perbaikan dan fitur baru yang tidak ada pada MySQL dan diklaim lebih stabil dan lebih aman.

Tanpa basa-basi lagi mari kita ke tutorialnya... Let's GO

Untuk mengatur replication Master-Slave pada sistem berbasis Debian 11 dengan MariaDB, ada beberapa langkah yang harus diikuti:

  1. Instalasi MariaDB pada semua node Master dan Slave.
  2. Konfigurasi node Master dengan mengatur file konfigurasi 50-server.cnf untuk mengaktifkan binary logging dan menentukan ID unik untuk server tersebut.
  3. Membuat user replication pada node Master dan memberikan izin untuk mengakses data.
  4. Mengatur node Slave dengan mengkonfigurasi file konfigurasi 50-server.cnf dan menentukan ID unik untuk server tersebut.
  5. Verifikasi replication pada node master-slave.

Diatas merupakan point-point dari pembuatan replication master-slave, untuk penjelasannya kalian bisa lanjutkan tutorial ini sampai selesai.

Install MariaDB pada semua node Master dan Slave

Install MariaDB

Kalian memperlukan instalasi MariaDB server package pada kedua node kalian (master-slave), namun jika server kalian masih dalam kondisi setelah install makan dilakukan update dan upgrade package terlebih dahulu. Kalian bisa ikuti perintah dibawah ini:

💡

Pastikan kalian sudah masuk sebagai user root, caranya bisa menggunakan perintah su atau sudo lalu masukkan password.

Jika sudah masuk sebagai user root silahkan update repositori apt.

BASH
apt update && apt upgrade

Install MariaDB-server.

BASH
apt install mariadb-server -y

Setelah selesai install package MariaDB-server, kalian check status service dari MariaDB apakah sudah berjalan atau belum:

BASH
systemctl status mariadb

Konfigurasi mysql_secure_installation:

BASH
mysql_secure_installation

Ikuti jawaban seperti dibawah ini:

  1. Enter current password for root (enter for none): Enter
  2. Set root password? [Y/n] Y (Isikan password root kalian)
  3. Remove anonymous users? [Y/n] Y
  4. Disallow root login remotely? [Y/n] Y
  5. Remove test database and access to it? [Y/n] Y
  6. Reload privilege tables now? [Y/n] YReload privilege tables now? [Y/n] Y

Selesai, kalian bisa melakukan konfigurasi node Master untuk melanjutkan replication ini.

Konfigurasi Node Master

Server MariaDB menggunakan file binary log untuk melakukan replication, secara default binary log belum diaktifkan di konfigurasi default MariaDB. Jadi kita mengedit file konfigurasi MariaDB dan mengaktifkan binary log.

BASH
nano /etc/mysql/mariadb.conf.d/50-server.cnf

Ganti bind-address dari localhost menjadi 0.0.0.0:

BASH
bind-address            = 0.0.0.0

Setelah itu, tambahkan baris dibawah ini untuk mengaktifkan binary log:

BASH
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
max_binlog_size         = 100M
relay_log               = /var/log/mysql/mysql-relay-bin
relay_log_index         = /var/log/mysql/mysql-relay-bin.index

Contoh menambahkan barisnya: Menambahkan Baris Node Master

Save dan restart service MariaDB untuk menjalankan konfigurasi yang sudah diganti tadi:

BASH
systemctl restart mariadb

Secara default MariaDB menggunakan servicenya dengan port 3306, untuk mengchecknya kalian bisa ikuti perintah ini:

BASH
ss -antpl | grep mariadb

Maka akan menampilkan tampilan seperti dibawah:

BASH
LISTEN    0         80                 0.0.0.0:3306             0.0.0.0:*        users:(("mysqld",pid=3425,fd=22))

Membuat User Replication Pada node Master dan Memberikan Permission

Untuk membuat replication user, kalian masuk pada menu mysql -u root -p, kalian bisa ikuti perintah dibawah ini:

BASH
mysql -u root -p

Akan menampilkan tampilan versi MariaDB beserta versi server kalian.

SQL
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 42
Server version: 10.5.18-MariaDB-0+deb11u1 Debian 11

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)]>

Buatlah user dan password seperti dibawah:

SQL
CREATE USER 'replication'@'%' identified by '12345';

Selanjutnya grant replication slave previlage ke user dengan mengikuti perintah dibawah:

SQL
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

Lalu flush previlage untuk memberikan perubahan:

SQL
FLUSH PRIVILEGES;

Verifikasi master status dengan mengikuti perintah dibawah:

SQL
SHOW MASTER STATUS;

kalian harus mendapatkan binary log file pada tampilan berikut:

SQL
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      777 |              |                  |
+------------------+----------+--------------+------------------+

Selesai kalian bisa keluar dari MariaDB, dan melanjutkan konfigurasi pada node slave.

SQL
EXIT;

Mengatur Node Slave

Pertama kalian diharuskan mengaktifkan relay log dan replication pada node slave. Kalian bisa melakukannya dengan mengikuti perintah dibawah ini:

BASH
nano /etc/mysql/mariadb.conf.d/50-server.cnf

Ubah bind-address dari localhost ke 0.0.0.0:

BASH
bind-address            = 0.0.0.0

Setelah itu, tambahkan baris dibawah ini untuk mengaktifkan binary log:

BASH
server-id               = 2
log_bin                 = /var/log/mysql/mysql-bin.log
max_binlog_size         = 100M
relay_log               = /var/log/mysql/mysql-relay-bin
relay_log_index         = /var/log/mysql/mysql-relay-bin.index

Contoh menambahkan barisnya: Menambahkan Baris Node Slave

Save dan restart service MariaDB untuk menjalankan konfigurasi yang sudah diganti tadi:

BASH
systemctl restart mariadb

Kalian juga perlu mengkonfigurasi node slave untuk replication node master, Ikuti perintah ini:

BASH
mysql -u root -p

Jika ingin mengkoneksikan, kalian dianjurkan untuk nonaktifkan slave:

SQL
STOP SLAVE;

Selanjutnya kalian konekkan slave ke replication node master dengan mengikuiti perintah dibawah:

SQL
CHANGE MASTER TO MASTER_HOST = '10.50.50.100', MASTER_USER = 'replication', MASTER_PASSWORD = '12345', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 786;

Pastikan saat mengisi CHANGE MASTER sesuai dengan node master kalian, untuk keterangannya sebagai berikut:

  • 10.50.50.100 IP Address dari node master.
  • replication user yang di replication.
  • 12345 password user replication.
  • mysql-bin.000001 binary log name file (dari master).
  • 786 binary log file position.

Setelah itu kalian bisa start slave:

SQL
START SLAVE;

Jika tidak terjadi eror maka slave kalian berhasil terkonek😉. Keluar untuk menguji replication:

SQL
EXIT;

Verifikasi Replication MariaDB

Jika MariaDB master dan slave sudah terkonek, kita perlu test dari replication ini berjalan atau tidak.

Pertama, pada node master:

BASH
mysql -u root -p

Buatkan databases sebagai contoh test_database:

SQL
CREATE DATABASE test_database;

Gunakan database test_database untuk membuat tabel seperti dibawah:

SQL
USE test_database;
CREATE TABLE daftar_siswa (id int, name varchar(30), surname varchar(20));

Isikan data pada tabel daftar_siswa.

SQL
INSERT INTO daftar_siswa (id, name, surname) VALUES (1, 'Taufik Crisnawan Santoso', 'Taufik');
INSERT INTO daftar_siswa (id, name, surname) VALUES (2, 'Muhammad Ichsan', 'Ichsan');

Verifikasi data dengan perintah:

SQL
SELECT * FROM daftar_siswa;

Akan mengeluarkan tampilan data dari database.

SQL
+------+--------------------------+---------+
| id   |           name           | surname |
+------+--------------------------+---------+
|    1 | Taufik Crisnawan Santoso | Taufik  |
|    2 | Muhammad Ichsanul Fadhil | Ichsan  |
+------+--------------------------+---------+

Setelah itu kembali pada node sleve dan masuk pada menu MariaDB:

BASH
mysql -u root -p

Masukkan perintah dibawah ini untuk memverifikasi status slave sudah terkonek atau belum:

SQL
SHOW SLAVE STATUS \G

Akan muncul tampilan seperti dibawah ini:

SQL
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 10.50.50.100
                   Master_User: replication
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql-bin.000001
           Read_Master_Log_Pos: 1491
                Relay_Log_File: mysql-relay-bin.000002
                 Relay_Log_Pos: 1260
         Relay_Master_Log_File: mysql-bin.000001
              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: 1491
               Relay_Log_Space: 1569
               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
                     SQL_Delay: 0
           SQL_Remaining_Delay: NULL
       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
              Slave_DDL_Groups: 2
Slave_Non_Transactional_Groups: 0
    Slave_Transactional_Groups: 2
💡

Pastikan pada Slave_IO_Running dan Slave_SQL_Running menunjukkan status Yes, yang artinya replication berhasil terconnect dengan node master.

Kalian bisa check juga menggunakan perintah dibawah:

SQL
SHOW DATABASES;

Berikut tampilannya:

SQL
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test_database      |
+--------------------+

Masuk databases test_database:

SQL
USE test_database;
SHOW TABLES;

Akan muncul table seperti node master:

SQL
+--------------------------+
| Tables_in_ test_database |
+--------------------------+
| daftar_siswa             |
+--------------------------+

Verifikasi kembali data yang ada pada daftar_siswa:

SQL
SELECT * FROM daftar_siswa;

Maka pada slave akan muncul data yang sudah dibuat di node master:

SQL
+------+--------------------------+---------+
| id   |           name           | surname |
+------+--------------------------+---------+
|    1 | Taufik Crisnawan Santoso | Taufik  |
|    2 | Muhammad Ichsanul Fadhil | Ichsan  |
+------+--------------------------+---------+

Kesimpulan

Replication master-slave adalah metode penyalinan data dari server data master ke server slave pada sistem Debian 11 dengan MariaDB untuk meningkatkan ketahanan sistem dan kinerja. Konfigurasi replication meliputi pengaturan file konfigurasi, membuat user replikasi, membuat backup basis data, dan mengatur server slave untuk melakukan replication dari server master.

Kalian bisa bagikan tutorial ini ke teman kalian yang kebingungan dalam melakukan replication master-slave😉 TERIMAKSIH

Edit on GitHub