Replication Master Slave MariaDB on Debian 11
8 min read
—
Written by / Taufik Crisnawan Santoso
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.
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:
- Instalasi MariaDB pada semua node Master dan Slave.
- Konfigurasi node Master dengan mengatur file konfigurasi 50-server.cnf untuk mengaktifkan binary logging dan menentukan ID unik untuk server tersebut.
- Membuat user replication pada node Master dan memberikan izin untuk mengakses data.
- Mengatur node Slave dengan mengkonfigurasi file konfigurasi 50-server.cnf dan menentukan ID unik untuk server tersebut.
- 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.
apt update && apt upgrade
Install MariaDB-server.
apt install mariadb-server -y
Setelah selesai install package MariaDB-server, kalian check status service dari MariaDB apakah sudah berjalan atau belum:
systemctl status mariadb
Konfigurasi mysql_secure_installation:
mysql_secure_installation
Ikuti jawaban seperti dibawah ini:
- Enter current password for root (enter for none): Enter
- Set root password? [Y/n] Y (Isikan password root kalian)
- 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] 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.
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Ganti bind-address dari localhost menjadi 0.0.0.0:
bind-address = 0.0.0.0
Setelah itu, tambahkan baris dibawah ini untuk mengaktifkan binary log:
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:
Save dan restart service MariaDB untuk menjalankan konfigurasi yang sudah diganti tadi:
systemctl restart mariadb
Secara default MariaDB menggunakan servicenya dengan port 3306, untuk mengchecknya kalian bisa ikuti perintah ini:
ss -antpl | grep mariadb
Maka akan menampilkan tampilan seperti dibawah:
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:
mysql -u root -p
Akan menampilkan tampilan versi MariaDB beserta versi server kalian.
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:
CREATE USER 'replication'@'%' identified by '12345';
Selanjutnya grant replication slave previlage ke user dengan mengikuti perintah dibawah:
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
Lalu flush previlage untuk memberikan perubahan:
FLUSH PRIVILEGES;
Verifikasi master status dengan mengikuti perintah dibawah:
SHOW MASTER STATUS;
kalian harus mendapatkan binary log file pada tampilan berikut:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 777 | | |
+------------------+----------+--------------+------------------+
Selesai kalian bisa keluar dari MariaDB, dan melanjutkan konfigurasi pada node slave.
EXIT;
Mengatur Node Slave
Pertama kalian diharuskan mengaktifkan relay log dan replication pada node slave. Kalian bisa melakukannya dengan mengikuti perintah dibawah ini:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Ubah bind-address dari localhost ke 0.0.0.0:
bind-address = 0.0.0.0
Setelah itu, tambahkan baris dibawah ini untuk mengaktifkan binary log:
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:
Save dan restart service MariaDB untuk menjalankan konfigurasi yang sudah diganti tadi:
systemctl restart mariadb
Kalian juga perlu mengkonfigurasi node slave untuk replication node master, Ikuti perintah ini:
mysql -u root -p
Jika ingin mengkoneksikan, kalian dianjurkan untuk nonaktifkan slave:
STOP SLAVE;
Selanjutnya kalian konekkan slave ke replication node master dengan mengikuiti perintah dibawah:
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:
START SLAVE;
Jika tidak terjadi eror maka slave kalian berhasil terkonek😉. Keluar untuk menguji replication:
EXIT;
Verifikasi Replication MariaDB
Jika MariaDB master dan slave sudah terkonek, kita perlu test dari replication ini berjalan atau tidak.
Pertama, pada node master:
mysql -u root -p
Buatkan databases sebagai contoh test_database:
CREATE DATABASE test_database;
Gunakan database test_database untuk membuat tabel seperti dibawah:
USE test_database;
CREATE TABLE daftar_siswa (id int, name varchar(30), surname varchar(20));
Isikan data pada tabel daftar_siswa.
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:
SELECT * FROM daftar_siswa;
Akan mengeluarkan tampilan data dari database.
+------+--------------------------+---------+
| id | name | surname |
+------+--------------------------+---------+
| 1 | Taufik Crisnawan Santoso | Taufik |
| 2 | Muhammad Ichsanul Fadhil | Ichsan |
+------+--------------------------+---------+
Setelah itu kembali pada node sleve dan masuk pada menu MariaDB:
mysql -u root -p
Masukkan perintah dibawah ini untuk memverifikasi status slave sudah terkonek atau belum:
SHOW SLAVE STATUS \G
Akan muncul tampilan seperti dibawah ini:
*************************** 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:
SHOW DATABASES;
Berikut tampilannya:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test_database |
+--------------------+
Masuk databases test_database:
USE test_database;
SHOW TABLES;
Akan muncul table seperti node master:
+--------------------------+
| Tables_in_ test_database |
+--------------------------+
| daftar_siswa |
+--------------------------+
Verifikasi kembali data yang ada pada daftar_siswa:
SELECT * FROM daftar_siswa;
Maka pada slave akan muncul data yang sudah dibuat di node master:
+------+--------------------------+---------+
| 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