fbpx
34.6 C
Jakarta
Rabu, 15 Mei 2024

Mengatur Replikasi Master-Master MariaDB di Debian 11

Tutorial pembahasan cara menyiapkan Replikasi Master-Master MariaDB di Server Debian 11. Selain itu, kami akan membahas cara menyinkronkan waktu menggunakan Chrony antara server MariaDB.

Untuk menyelesaikan tutorial ini, Anda memerlukan persyaratan berikut:
– Dua atau lebih Server Debian 11. Demonstrasi ini menggunakan dua server Debian.
– Pengguna non-root dengan hak istimewa root/administrator.

Siapkan file fqdn dan /etc/hosts

Untuk menyiapkan Master-Master MariaDB di antara beberapa server, Anda harus memastikan setiap nama host sistem diselesaikan ke alamat IP yang benar. Untuk mengonfigurasinya, Anda perlu menyiapkan file fqdn dan /etc/hosts di setiap server.

Dalam demonstrasi ini, kami akan menggunakan dua server Debian di bawah ini:

IP Address      Hostname    FQDN
---------------------------------------------------
192.168.2.20    master1     master1.localdomain.com
192.168.2.21    master2     master2.localdomain.com

untuk mengatur fqdn (Nama Domain yang Sepenuhnya Memenuhi Syarat) yang benar, jalankan perintah hostnamectl di bawah ini.

Siapkan fqdn untuk server “master1”.

sudo hostnamectl set-hostname master1.localdomain.com

Siapkan fqdn untuk server “master2”.

sudo hostnamectl set-hostname master2.localdomain.com

Selanjutnya, edit file /etc/hosts di setiap server menggunakan perintah berikut.

sudo nano /etc/hosts

Tambahkan konfigurasi berikut ke file.

192.168.2.20     master1.localdomain.com master1
192.168.2.21     master2.localdomain.com master2

Simpan dan tutup file setelah selesai.
Terakhir, jalankan perintah “ping” di bawah ini untuk memeriksa dan memverifikasi file fqdn dan /etc/hosts.

Sekarang Anda akan melihat nama host “master1” diarahkan ke fqdn “master1.localdomain.com” dengan alamat IP “192.168.2.20”. Dan hostname “master2” akan diarahkan ke fqdn “master2.localdomain.com” dengan alamat IP “192.168.2.21”.

ping master1
ping master2

Menyinkronkan Waktu menggunakan Chrony

Sinkronisasi waktu untuk penerapan Replikasi Master-Master MariaDB sangat penting. Dan untuk menyinkronkan waktu antar server, Anda perlu menyiapkan Chrony sebagai klien NTP di setiap server MariaDB.

Untuk menginstal paket Chrony, jalankan perintah “apt install” berikut. Masukkan Y untuk mengonfirmasi instalasi dan tekan ENTER, dan instalasi akan dimulai.

sudo apt install chrony

Setelah penginstalan selesai, jalankan perintah “systemctl” di bawah untuk memulai dan mengaktifkan layanan Chrony.

sudo systemctl start chrony
sudo systemctl enable chrony

Sekarang periksa dan verifikasi layanan Chrony menggunakan perintah berikut. Dan Anda akan melihat layanan Chrony sedang berjalan. Selain itu, Anda akan melihat layanan Chrony “enabled”, yang berarti layanan ini akan berjalan secara otomatis saat boot sistem.

sudo systemctl status chronyd

Selanjutnya, jalankan perintah “timedatectl” di bawah ini untuk menyesuaikan waktu sistem Anda dengan zona waktu tertentu dan mengaktifkannya untuk menggunakan Chrony layanan NTP.

sudo timedatectl set-timezone Asia/Jakarta --adjust-system-clock
sudo timedatectl set-ntp yes

Terakhir, jalankan perintah “timedatectl” di bawah ini untuk memeriksa dan memverifikasi pengaturan jam dan waktu sistem Anda saat ini. Pastikan waktu disinkronkan antara semua server MariaDB.

sudo timedatectl
root@master1:~# timedatectl
               Local time: Fri 2022-12-16 17:20:31 WIB
           Universal time: Fri 2022-12-16 10:20:31 UTC
                 RTC time: Fri 2022-12-16 10:20:32
                Time zone: Asia/Jakarta (WIB, +0700)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Installing MariaDB Server

Repositori default Debian menyediakan paket server MariaDB. Namun, untuk demonstrasi ini, kami akan menginstal server MariaDB dari repositori resmi MariaDB.

Sebelum menginstal server MariaDB, jalankan perintah “apt install” di bawah ini untuk menginstal beberapa dependensi paket dasar. Masukkan Y untuk mengkonfirmasi instalasi dan tekan ENTER untuk melanjutkan.

sudo apt install gnupg2 apt-transport-https software-properties-common

Selanjutnya, jalankan perintah berikut untuk mengimpor kunci GPG untuk repositori MariaDB. Sidik jari kunci lengkapnya adalah “1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB”.

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Sekarang jalankan perintah berikut untuk menambahkan repositori MariaDB untuk server Debian 11. Kemudian, perbarui dan segarkan indeks paket di server Anda.

sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.8.3/debian bullseye main'
sudo apt update

Untuk menginstal paket “mariadb-server”, jalankan perintah “apt install” di bawah ini. Masukkan Y untuk konfirmasi dan tekan ENTER, dan instalasi akan dimulai.

sudo apt install mariadb-server

Pada sistem Debian, layanan MariaDB akan dimulai dan diaktifkan secara otomatis. Jalankan perintah “systemctl” berikut di bawah ini untuk memeriksa dan memverifikasi layanan MariaDB.

Anda akan melihat layanan MariaDB “enabled”, yang artinya akan berjalan secara otomatis saat boot sistem. Dan status layanan MariaDB saat ini adalah “running”.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Menyiapkan Firewall UFW

Disarankan untuk menggunakan firewall di antara semua server MariaDB Anda. Ini akan memastikan bahwa hanya alamat IP atau jaringan yang diizinkan yang dapat mengakses dan mencapai port layanan MariaDB. Dan pada demo kali ini, kita akan menggunakan firewall UFW.

Jalankan perintah “apt install” di bawah ini untuk menginstal paket “ufw”. Masukkan Y untuk mengkonfirmasi instalasi dan tekan ENTER untuk melanjutkan.

sudo apt install ufw

Setelah instalasi selesai, jalankan perintah “ufw” di bawah ini untuk menambahkan profil aplikasi “OpenSSH”. Kemudian, jalankan dan aktifkan layanan firewall UFW.

Anda akan diminta untuk mengkonfirmasi dan mengaktifkan firewall UFW, masukan “y” dan tekan ENTER. Dan firewall UFW aktif dan berjalan.

sudo ufw allow "OpenSSH"
sudo ufw enable

Selanjutnya, buka beberapa port untuk penerapan Replikasi Master-Master MariaDB. Beberapa port TCP untuk penerapan Replikasi MariaDB adalah “3306“, “4567“, “4568“, dan “4444“.

Baca Juga:  Cara Query beberapa tabel dalam SQL

Dalam contoh ini, hanya jaringan “192.168.2.0/24” yang akan diizinkan untuk mengakses port TCP server MariaDB.

Untuk server “master1” dengan alamat IP “192.168.2.20”, jalankan perintah “ufw” berikut.

sudo ufw allow from 192.168.2.0/24 to 192.168.2.20 port 3306 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.20 port 4567 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.20 port 4568 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.20 port 4444 proto tcp

Untuk server “master2” dengan alamat IP “192.168.2.21”, jalankan perintah “ufw” berikut.

sudo ufw allow from 192.168.2.0/24 to 192.168.2.21 port 3306 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.21 port 4567 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.21 port 4568 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.21 port 4444 proto tcp

Terakhir, periksa dan verifikasi status firewall UFW dengan semua aturan yang diaktifkan menggunakan perintah di bawah ini. Anda akan melihat profil aplikasi “OpenSSH” dengan semua port Replikasi MariaDB “3306”, “4567”, “4568”, dan “4444” yang tersedia di firewall UFW.

sudo ufw status
root@master1:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
192.168.2.20 3306/tcp      ALLOW       192.168.2.0/24                  
192.168.2.20 4567/tcp      ALLOW       192.168.2.0/24                 
192.168.2.20 4568/tcp      ALLOW       192.168.2.0/24                   
192.168.2.20 4444/tcp      ALLOW       192.168.2.0/24                                    
OpenSSH (v6)               ALLOW       Anywhere (v6)             
192.168.2.20 3306/tcp (v6) ALLOW       192.168.2.0/24 (v6)             
192.168.2.20 4567/tcp (v6) ALLOW       192.168.2.0/24 (v6)              
192.168.2.20 4567/tcp (v6) ALLOW       192.168.2.0/24 (v6)              
192.168.2.20 4444/tcp (v6) ALLOW       192.168.2.0/24 (v6)

Menyiapkan master1 Server MariaDB

Anda telah menyelesaikan konfigurasi dasar server Debian untuk penerapan Replikasi Master-Master MariaDB. Sekarang, mari kita mulai mengonfigurasi server MariaDB.

Pertama, Anda akan menyiapkan server MariaDB di server “master1”. Masuk ke shell server “master1”.

Jalankan perintah “systemctl” di bawah ini untuk menghentikan layanan MariaDB. Ini diperlukan sebelum Anda menyiapkan server MariaDB.

sudo systemctl stop mariadb

Sekarang edit file konfigurasi server MariaDB “/etc/mysql/mariadb.conf.d/50-server.cnf” menggunakan perintah berikut.

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

Ubah “listen-address” default ke alamat IP internal. Dalam contoh ini, server “master1” memiliki alamat IP “192.168.2.20“. Selanjutnya, aktifkan “binary_log” untuk server MariaDB, ini memungkinkan Anda mengatur replikasi di server MariaDB. Pastikan untuk menempatkan konfigurasi berikut di bawah opsi “[mysqld]”.

[mysqld]
bind-address = 192.168.2.20

server-id              = 1
report_host            = master1

log_bin                = /var/log/mysql/mariadb-bin
log_bin_index          = /var/log/mysql/mariadb-bin.index

relay_log              = /var/log/mysql/relay-bin
relay_log_index        = /var/log/mysql/relay-bin.index

Simpan dan tutup file setelah selesai.

Selanjutnya, jalankan perintah “systemctl” di bawah untuk memulai layanan MariaDB dan terapkan perubahan baru. Kemudian, periksa dan verifikasi alamat IP mana yang dijalankan oleh MariaDB. Anda akan melihat layanan MariaDB sekarang berjalan di alamat IP internal “192.168.2.20“.

sudo systemctl start mariadb
ss -plnt

Sekarang Anda perlu membuat pengguna MariaDB baru yang akan digunakan untuk mereplikasi data antar server MariaDB. Masuk ke shell MariaDB sebagai “root” menggunakan perintah “mysql” di bawah ini.

sudo mysql -u root -p

Jalankan kueri berikut untuk membuat pengguna dan kata sandi MariaDB baru “replusr“. Kemudian, berikan hak istimewa yang benar kepada pengguna.

CREATE USER 'replusr'@'%' IDENTIFIED BY 'replusr';
GRANT REPLICATION SLAVE ON *.* TO 'replusr'@'%';
FLUSH PRIVILEGES;

Selanjutnya, jalankan kueri berikut untuk memeriksa log biner saat ini dan posisinya yang tepat. Dalam contoh ini, file log biner untuk server MariaDB adalah “mariadb-bin.000001” dengan posisi “773“. Keluaran ini akan digunakan pada tahap selanjutnya untuk menyiapkan server “master2“.

SHOW MASTER STATUS;

Ketik “quit” untuk keluar dari shell MariaDB.

Menyiapkan server master2 MariaDB

Sekarang pindah ke server “master2” dan mulai mengkonfigurasi server MariaDB. Konfigurasi untuk Replikasi Master-Master MariaDB tidak terlalu berbeda untuk semua server MariaDB.

Jalankan perintah berikut untuk menghentikan layanan MariaDB.

sudo systemctl stop mariadb

Edit file konfigurasi MariaDB “/etc/mysql/mariadb.conf.d/50-server.cnf” menggunakan perintah berikut.

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

Ubah “bind-address” ke alamat IP lokal dari server “master2”. Kemudian, aktifkan log biner di server MariaDB “master2” untuk mengaktifkan replikasi. Pastikan untuk menambahkan konfigurasi berikut di bawah opsi “[mysqld]”.

[mysqld]
bind-address = 192.168.2.21

server-id              = 2
report_host            = master2

log_bin                = /var/log/mysql/mariadb-bin
log_bin_index          = /var/log/mysql/mariadb-bin.index

relay_log              = /var/log/mysql/relay-bin
relay_log_index        = /var/log/mysql/relay-bin.index

Simpan dan tutup file setelah selesai.

Selanjutnya, mulai layanan MariaDB untuk menerapkan perubahan baru. Kemudian, periksa dan verifikasi alamat IP saat ini yang menjalankan server MariaDB. Jika konfigurasi Anda benar, Anda akan melihat server MariaDB tidak berjalan pada alamat IP internal server “master2“, yaitu “192.168.2.21“.

sudo systemctl start mariadb
ss -plnt

Setelah layanan MariaDB berjalan, jalankan perintah berikut untuk masuk ke shell MariaDB sebagai pengguna “root“.

sudo mysql -u root -p

Jalankan kueri berikut untuk membuat pengguna MariaDB baru yang akan digunakan untuk mereplikasi data di antara semua server MariaDB. Pengguna ini harus cocok dengan pengguna yang baru saja Anda buat di server “master1”.

CREATE USER 'replusr'@'%' IDENTIFIED BY 'replusr';
GRANT REPLICATION SLAVE ON *.* TO 'replusr'@'%';
FLUSH PRIVILEGES;

Setelah itu, Anda perlu melakukan perubahan pada server “master2” MariaDB dan menentukan node “Master” menggunakan konfigurasi mendetail dari server “master1” MariaDB.

Baca Juga:  Instalasi Virtualmin dengan Nginx dan MariaDB di Debian 11

Jalankan kueri berikut untuk menghentikan budak. Kemudian, tambahkan informasi mendetail tentang server “master1” MariaDB. Pada contoh ini server MariaDB “master1” menggunakan hostname “master1”, user dan password untuk replikasi data adalah “replusr“, dan terakhir file binlognya adalah “mariadb-bin.000001” dengan posisi “773“.

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='replusr', MASTER_PASSWORD='replusr', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=773;

Sekarang mulai budak lagi menggunakan kueri berikut. Kemudian, periksa dan verifikasi status budak di server “master2”. Jika Anda mendapatkan output seperti “Slave_IO_Running: Yes” dan “Slave_SQL_Running: Yes“, itu berarti replikasi MariaDB aktif dan berjalan. Juga, Anda dapat melihat file log biner di server “master2” adalah “mariadb-bin.000001” dengan posisi “773“. yang seharusnya sama dengan di server “master1”. Selain itu, Anda dapat melihat nilai “Master_Host” MariaDB adalah “master1”.

START SLAVE;
SHOW SLAVE STATUS\G

Anda juga dapat memverifikasi file log biner master dan posisi di server “master2” menggunakan kueri berikut. Dan Anda harus mendapatkan keluaran yang sama dengan file log biner “mariadb-bin.000001” dengan posisi “773” seperti pada server “master1“.

SHOW MASTER STATUS;

Replikasi Master-Master di server master1 MariaDB

Karena panduan ini adalah untuk mengatur Replikasi master-master MariaDB, maka Anda juga perlu menambahkan dan menentukan konfigurasi detail “master2” ke server “master1”.

Kembali ke server “master1” dan masuk ke shell MariaDB menggunakan perintah “mysql” di bawah ini.

sudo mysql -u root -p

Hentikan budak menggunakan perintah berikut. Kemudian, tambahkan informasi mendetail tentang server “master2“, yang menyertakan nama host server “master2”, pengguna dan kata sandi MariaDB untuk replikasi, serta file dan posisi log biner.

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='master2', MASTER_USER='replusr', MASTER_PASSWORD='replusr', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=773;

Sekarang mulai lagi budak menggunakan perintah di bawah ini. Kemudian, periksa dan verifikasi budak di server “master1”. Dan Anda akan melihat output seperti “Slave_IO_Running: Yes” dan “Slave_SQL_Running: Yes“, yang berarti replikasi MariaDB aktif dan berjalan di server MariaDB “master1“. Juga, Anda dapat melihat nilai “Master_Host” adalah server “master2“.

START SLAVE;
SHOW SLAVE STATUS\G

Menguji Replikasi Basis Data

Untuk memverifikasi Replikasi Master-Master MariaDB, buat database baru di server “master1” dan masukkan beberapa data ke dalamnya. Kemudian, masuk ke “master2” dan verifikasi database, dan masukkan data lain ke dalamnya.

Pindah ke server “master1” dan masuk ke shell MariaDB sebagai pengguna root menggunakan perintah berikut.

sudo mysql -u root -p

Buat database baru “testdb” menggunakan kueri berikut.

CREATE DATABASE testdb;
USE testdb;

Sekarang buat beberapa tabel ke database “testdb” menggunakan kueri berikut.

CREATE TABLE users (id INT AUTO_INCREMENT,
firstname VARCHAR(30),
lastname VARCHAR(30),
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(id));


Setelah itu, masukkan beberapa data ke “testdb” menggunakan kueri MariaDB di bawah ini.

INSERT INTO users(firstname,lastname) VALUES ('Alice','Wonders');

Untuk memeriksa data Anda di server MariaDB, gunakan kueri “SELECT” seperti di bawah ini. Dan Anda akan melihat data yang baru saja Anda masukkan.

SELECT * FROM users;

Selanjutnya, pindah ke server “master2” dan masuk ke shell MariaDB menggunakan perintah “mysql” di bawah ini.

sudo mysql -u root -p

Periksa dan verifikasi daftar database di server “master2” menggunakan kueri berikut. Dan Anda harus mendapatkan database “testdb” yang baru saja Anda buat.

SHOW DATABASES;
USE testdb;

Selanjutnya, masukkan beberapa data lain ke database “testdb” dari server “master2“. Kemudian, periksa dan verifikasi data menggunakan kueri “SELECT“. Dan Anda harus memasukkan data baru dari server “master2“.

INSERT INTO users(firstname,lastname) VALUES ('Bob','Burgers');
SELECT * FROM users;

Sekarang kembali ke “master1” untuk memeriksa dan memverifikasi data baru yang baru saja Anda masukkan dari server “master2“. Jalankan kueri berikut untuk memeriksa data baru dari server “master1“. Dan Anda akan melihat data baru yang baru saja Anda masukkan dari server “master2” direplikasi ke server “master1“.

select @@hostname;
SELECT * FROM users;

Kesimpulan

Selamat! Anda sekarang telah berhasil menerapkan Replikasi Master-Master MariaDB di server Debian 11. Anda juga telah mengonfigurasi sinkronisasi waktu di server MariaDB menggunakan layanan Chrony. Selain itu, Anda juga telah mengamankan penerapan server MariaDB menggunakan firewall UFW. Pada akhirnya, Anda memiliki server MariaDB dengan replikasi otomatis antara dua server MariaDB, Anda dapat menulis di semua server MariaDB tersebut dan semua data akan direplikasi secara otomatis.

Tutorial pembahasan cara menyiapkan Replikasi Master-Master MariaDB di Server Debian 11. Selain itu, kami akan membahas cara menyinkronkan waktu menggunakan Chrony antara server MariaDB.

Untuk menyelesaikan tutorial ini, Anda memerlukan persyaratan berikut:
– Dua atau lebih Server Debian 11. Demonstrasi ini menggunakan dua server Debian.
– Pengguna non-root dengan hak istimewa root/administrator.

Siapkan file fqdn dan /etc/hosts

Untuk menyiapkan Master-Master MariaDB di antara beberapa server, Anda harus memastikan setiap nama host sistem diselesaikan ke alamat IP yang benar. Untuk mengonfigurasinya, Anda perlu menyiapkan file fqdn dan /etc/hosts di setiap server.

Dalam demonstrasi ini, kami akan menggunakan dua server Debian di bawah ini:

IP Address      Hostname    FQDN
---------------------------------------------------
192.168.2.20    master1     master1.localdomain.com
192.168.2.21    master2     master2.localdomain.com

untuk mengatur fqdn (Nama Domain yang Sepenuhnya Memenuhi Syarat) yang benar, jalankan perintah hostnamectl di bawah ini.

Siapkan fqdn untuk server “master1”.

sudo hostnamectl set-hostname master1.localdomain.com

Siapkan fqdn untuk server “master2”.

sudo hostnamectl set-hostname master2.localdomain.com

Selanjutnya, edit file /etc/hosts di setiap server menggunakan perintah berikut.

sudo nano /etc/hosts

Tambahkan konfigurasi berikut ke file.

192.168.2.20     master1.localdomain.com master1
192.168.2.21     master2.localdomain.com master2

Simpan dan tutup file setelah selesai.
Terakhir, jalankan perintah “ping” di bawah ini untuk memeriksa dan memverifikasi file fqdn dan /etc/hosts.

Sekarang Anda akan melihat nama host “master1” diarahkan ke fqdn “master1.localdomain.com” dengan alamat IP “192.168.2.20”. Dan hostname “master2” akan diarahkan ke fqdn “master2.localdomain.com” dengan alamat IP “192.168.2.21”.

ping master1
ping master2

Menyinkronkan Waktu menggunakan Chrony

Sinkronisasi waktu untuk penerapan Replikasi Master-Master MariaDB sangat penting. Dan untuk menyinkronkan waktu antar server, Anda perlu menyiapkan Chrony sebagai klien NTP di setiap server MariaDB.

Untuk menginstal paket Chrony, jalankan perintah “apt install” berikut. Masukkan Y untuk mengonfirmasi instalasi dan tekan ENTER, dan instalasi akan dimulai.

sudo apt install chrony

Setelah penginstalan selesai, jalankan perintah “systemctl” di bawah untuk memulai dan mengaktifkan layanan Chrony.

sudo systemctl start chrony
sudo systemctl enable chrony

Sekarang periksa dan verifikasi layanan Chrony menggunakan perintah berikut. Dan Anda akan melihat layanan Chrony sedang berjalan. Selain itu, Anda akan melihat layanan Chrony “enabled”, yang berarti layanan ini akan berjalan secara otomatis saat boot sistem.

sudo systemctl status chronyd

Selanjutnya, jalankan perintah “timedatectl” di bawah ini untuk menyesuaikan waktu sistem Anda dengan zona waktu tertentu dan mengaktifkannya untuk menggunakan Chrony layanan NTP.

sudo timedatectl set-timezone Asia/Jakarta --adjust-system-clock
sudo timedatectl set-ntp yes

Terakhir, jalankan perintah “timedatectl” di bawah ini untuk memeriksa dan memverifikasi pengaturan jam dan waktu sistem Anda saat ini. Pastikan waktu disinkronkan antara semua server MariaDB.

sudo timedatectl
root@master1:~# timedatectl
               Local time: Fri 2022-12-16 17:20:31 WIB
           Universal time: Fri 2022-12-16 10:20:31 UTC
                 RTC time: Fri 2022-12-16 10:20:32
                Time zone: Asia/Jakarta (WIB, +0700)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Installing MariaDB Server

Repositori default Debian menyediakan paket server MariaDB. Namun, untuk demonstrasi ini, kami akan menginstal server MariaDB dari repositori resmi MariaDB.

Sebelum menginstal server MariaDB, jalankan perintah “apt install” di bawah ini untuk menginstal beberapa dependensi paket dasar. Masukkan Y untuk mengkonfirmasi instalasi dan tekan ENTER untuk melanjutkan.

sudo apt install gnupg2 apt-transport-https software-properties-common

Selanjutnya, jalankan perintah berikut untuk mengimpor kunci GPG untuk repositori MariaDB. Sidik jari kunci lengkapnya adalah “1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB”.

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Sekarang jalankan perintah berikut untuk menambahkan repositori MariaDB untuk server Debian 11. Kemudian, perbarui dan segarkan indeks paket di server Anda.

sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.8.3/debian bullseye main'
sudo apt update

Untuk menginstal paket “mariadb-server”, jalankan perintah “apt install” di bawah ini. Masukkan Y untuk konfirmasi dan tekan ENTER, dan instalasi akan dimulai.

sudo apt install mariadb-server

Pada sistem Debian, layanan MariaDB akan dimulai dan diaktifkan secara otomatis. Jalankan perintah “systemctl” berikut di bawah ini untuk memeriksa dan memverifikasi layanan MariaDB.

Anda akan melihat layanan MariaDB “enabled”, yang artinya akan berjalan secara otomatis saat boot sistem. Dan status layanan MariaDB saat ini adalah “running”.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Menyiapkan Firewall UFW

Disarankan untuk menggunakan firewall di antara semua server MariaDB Anda. Ini akan memastikan bahwa hanya alamat IP atau jaringan yang diizinkan yang dapat mengakses dan mencapai port layanan MariaDB. Dan pada demo kali ini, kita akan menggunakan firewall UFW.

Jalankan perintah “apt install” di bawah ini untuk menginstal paket “ufw”. Masukkan Y untuk mengkonfirmasi instalasi dan tekan ENTER untuk melanjutkan.

sudo apt install ufw

Setelah instalasi selesai, jalankan perintah “ufw” di bawah ini untuk menambahkan profil aplikasi “OpenSSH”. Kemudian, jalankan dan aktifkan layanan firewall UFW.

Anda akan diminta untuk mengkonfirmasi dan mengaktifkan firewall UFW, masukan “y” dan tekan ENTER. Dan firewall UFW aktif dan berjalan.

sudo ufw allow "OpenSSH"
sudo ufw enable

Selanjutnya, buka beberapa port untuk penerapan Replikasi Master-Master MariaDB. Beberapa port TCP untuk penerapan Replikasi MariaDB adalah “3306“, “4567“, “4568“, dan “4444“.

Baca Juga:  Baris perintah MySQL SHOW DATABASES, Daftar Semua List Database di MySQL

Dalam contoh ini, hanya jaringan “192.168.2.0/24” yang akan diizinkan untuk mengakses port TCP server MariaDB.

Untuk server “master1” dengan alamat IP “192.168.2.20”, jalankan perintah “ufw” berikut.

sudo ufw allow from 192.168.2.0/24 to 192.168.2.20 port 3306 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.20 port 4567 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.20 port 4568 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.20 port 4444 proto tcp

Untuk server “master2” dengan alamat IP “192.168.2.21”, jalankan perintah “ufw” berikut.

sudo ufw allow from 192.168.2.0/24 to 192.168.2.21 port 3306 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.21 port 4567 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.21 port 4568 proto tcp
sudo ufw allow from 192.168.2.0/24 to 192.168.2.21 port 4444 proto tcp

Terakhir, periksa dan verifikasi status firewall UFW dengan semua aturan yang diaktifkan menggunakan perintah di bawah ini. Anda akan melihat profil aplikasi “OpenSSH” dengan semua port Replikasi MariaDB “3306”, “4567”, “4568”, dan “4444” yang tersedia di firewall UFW.

sudo ufw status
root@master1:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
192.168.2.20 3306/tcp      ALLOW       192.168.2.0/24                  
192.168.2.20 4567/tcp      ALLOW       192.168.2.0/24                 
192.168.2.20 4568/tcp      ALLOW       192.168.2.0/24                   
192.168.2.20 4444/tcp      ALLOW       192.168.2.0/24                                    
OpenSSH (v6)               ALLOW       Anywhere (v6)             
192.168.2.20 3306/tcp (v6) ALLOW       192.168.2.0/24 (v6)             
192.168.2.20 4567/tcp (v6) ALLOW       192.168.2.0/24 (v6)              
192.168.2.20 4567/tcp (v6) ALLOW       192.168.2.0/24 (v6)              
192.168.2.20 4444/tcp (v6) ALLOW       192.168.2.0/24 (v6)

Menyiapkan master1 Server MariaDB

Anda telah menyelesaikan konfigurasi dasar server Debian untuk penerapan Replikasi Master-Master MariaDB. Sekarang, mari kita mulai mengonfigurasi server MariaDB.

Pertama, Anda akan menyiapkan server MariaDB di server “master1”. Masuk ke shell server “master1”.

Jalankan perintah “systemctl” di bawah ini untuk menghentikan layanan MariaDB. Ini diperlukan sebelum Anda menyiapkan server MariaDB.

sudo systemctl stop mariadb

Sekarang edit file konfigurasi server MariaDB “/etc/mysql/mariadb.conf.d/50-server.cnf” menggunakan perintah berikut.

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

Ubah “listen-address” default ke alamat IP internal. Dalam contoh ini, server “master1” memiliki alamat IP “192.168.2.20“. Selanjutnya, aktifkan “binary_log” untuk server MariaDB, ini memungkinkan Anda mengatur replikasi di server MariaDB. Pastikan untuk menempatkan konfigurasi berikut di bawah opsi “[mysqld]”.

[mysqld]
bind-address = 192.168.2.20

server-id              = 1
report_host            = master1

log_bin                = /var/log/mysql/mariadb-bin
log_bin_index          = /var/log/mysql/mariadb-bin.index

relay_log              = /var/log/mysql/relay-bin
relay_log_index        = /var/log/mysql/relay-bin.index

Simpan dan tutup file setelah selesai.

Selanjutnya, jalankan perintah “systemctl” di bawah untuk memulai layanan MariaDB dan terapkan perubahan baru. Kemudian, periksa dan verifikasi alamat IP mana yang dijalankan oleh MariaDB. Anda akan melihat layanan MariaDB sekarang berjalan di alamat IP internal “192.168.2.20“.

sudo systemctl start mariadb
ss -plnt

Sekarang Anda perlu membuat pengguna MariaDB baru yang akan digunakan untuk mereplikasi data antar server MariaDB. Masuk ke shell MariaDB sebagai “root” menggunakan perintah “mysql” di bawah ini.

sudo mysql -u root -p

Jalankan kueri berikut untuk membuat pengguna dan kata sandi MariaDB baru “replusr“. Kemudian, berikan hak istimewa yang benar kepada pengguna.

CREATE USER 'replusr'@'%' IDENTIFIED BY 'replusr';
GRANT REPLICATION SLAVE ON *.* TO 'replusr'@'%';
FLUSH PRIVILEGES;

Selanjutnya, jalankan kueri berikut untuk memeriksa log biner saat ini dan posisinya yang tepat. Dalam contoh ini, file log biner untuk server MariaDB adalah “mariadb-bin.000001” dengan posisi “773“. Keluaran ini akan digunakan pada tahap selanjutnya untuk menyiapkan server “master2“.

SHOW MASTER STATUS;

Ketik “quit” untuk keluar dari shell MariaDB.

Menyiapkan server master2 MariaDB

Sekarang pindah ke server “master2” dan mulai mengkonfigurasi server MariaDB. Konfigurasi untuk Replikasi Master-Master MariaDB tidak terlalu berbeda untuk semua server MariaDB.

Jalankan perintah berikut untuk menghentikan layanan MariaDB.

sudo systemctl stop mariadb

Edit file konfigurasi MariaDB “/etc/mysql/mariadb.conf.d/50-server.cnf” menggunakan perintah berikut.

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

Ubah “bind-address” ke alamat IP lokal dari server “master2”. Kemudian, aktifkan log biner di server MariaDB “master2” untuk mengaktifkan replikasi. Pastikan untuk menambahkan konfigurasi berikut di bawah opsi “[mysqld]”.

[mysqld]
bind-address = 192.168.2.21

server-id              = 2
report_host            = master2

log_bin                = /var/log/mysql/mariadb-bin
log_bin_index          = /var/log/mysql/mariadb-bin.index

relay_log              = /var/log/mysql/relay-bin
relay_log_index        = /var/log/mysql/relay-bin.index

Simpan dan tutup file setelah selesai.

Selanjutnya, mulai layanan MariaDB untuk menerapkan perubahan baru. Kemudian, periksa dan verifikasi alamat IP saat ini yang menjalankan server MariaDB. Jika konfigurasi Anda benar, Anda akan melihat server MariaDB tidak berjalan pada alamat IP internal server “master2“, yaitu “192.168.2.21“.

sudo systemctl start mariadb
ss -plnt

Setelah layanan MariaDB berjalan, jalankan perintah berikut untuk masuk ke shell MariaDB sebagai pengguna “root“.

sudo mysql -u root -p

Jalankan kueri berikut untuk membuat pengguna MariaDB baru yang akan digunakan untuk mereplikasi data di antara semua server MariaDB. Pengguna ini harus cocok dengan pengguna yang baru saja Anda buat di server “master1”.

CREATE USER 'replusr'@'%' IDENTIFIED BY 'replusr';
GRANT REPLICATION SLAVE ON *.* TO 'replusr'@'%';
FLUSH PRIVILEGES;

Setelah itu, Anda perlu melakukan perubahan pada server “master2” MariaDB dan menentukan node “Master” menggunakan konfigurasi mendetail dari server “master1” MariaDB.

Baca Juga:  Cara menginstal Nginx, MariaDB dan HHVM pada Debian 8

Jalankan kueri berikut untuk menghentikan budak. Kemudian, tambahkan informasi mendetail tentang server “master1” MariaDB. Pada contoh ini server MariaDB “master1” menggunakan hostname “master1”, user dan password untuk replikasi data adalah “replusr“, dan terakhir file binlognya adalah “mariadb-bin.000001” dengan posisi “773“.

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='replusr', MASTER_PASSWORD='replusr', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=773;

Sekarang mulai budak lagi menggunakan kueri berikut. Kemudian, periksa dan verifikasi status budak di server “master2”. Jika Anda mendapatkan output seperti “Slave_IO_Running: Yes” dan “Slave_SQL_Running: Yes“, itu berarti replikasi MariaDB aktif dan berjalan. Juga, Anda dapat melihat file log biner di server “master2” adalah “mariadb-bin.000001” dengan posisi “773“. yang seharusnya sama dengan di server “master1”. Selain itu, Anda dapat melihat nilai “Master_Host” MariaDB adalah “master1”.

START SLAVE;
SHOW SLAVE STATUS\G

Anda juga dapat memverifikasi file log biner master dan posisi di server “master2” menggunakan kueri berikut. Dan Anda harus mendapatkan keluaran yang sama dengan file log biner “mariadb-bin.000001” dengan posisi “773” seperti pada server “master1“.

SHOW MASTER STATUS;

Replikasi Master-Master di server master1 MariaDB

Karena panduan ini adalah untuk mengatur Replikasi master-master MariaDB, maka Anda juga perlu menambahkan dan menentukan konfigurasi detail “master2” ke server “master1”.

Kembali ke server “master1” dan masuk ke shell MariaDB menggunakan perintah “mysql” di bawah ini.

sudo mysql -u root -p

Hentikan budak menggunakan perintah berikut. Kemudian, tambahkan informasi mendetail tentang server “master2“, yang menyertakan nama host server “master2”, pengguna dan kata sandi MariaDB untuk replikasi, serta file dan posisi log biner.

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='master2', MASTER_USER='replusr', MASTER_PASSWORD='replusr', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=773;

Sekarang mulai lagi budak menggunakan perintah di bawah ini. Kemudian, periksa dan verifikasi budak di server “master1”. Dan Anda akan melihat output seperti “Slave_IO_Running: Yes” dan “Slave_SQL_Running: Yes“, yang berarti replikasi MariaDB aktif dan berjalan di server MariaDB “master1“. Juga, Anda dapat melihat nilai “Master_Host” adalah server “master2“.

START SLAVE;
SHOW SLAVE STATUS\G

Menguji Replikasi Basis Data

Untuk memverifikasi Replikasi Master-Master MariaDB, buat database baru di server “master1” dan masukkan beberapa data ke dalamnya. Kemudian, masuk ke “master2” dan verifikasi database, dan masukkan data lain ke dalamnya.

Pindah ke server “master1” dan masuk ke shell MariaDB sebagai pengguna root menggunakan perintah berikut.

sudo mysql -u root -p

Buat database baru “testdb” menggunakan kueri berikut.

CREATE DATABASE testdb;
USE testdb;

Sekarang buat beberapa tabel ke database “testdb” menggunakan kueri berikut.

CREATE TABLE users (id INT AUTO_INCREMENT,
firstname VARCHAR(30),
lastname VARCHAR(30),
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(id));


Setelah itu, masukkan beberapa data ke “testdb” menggunakan kueri MariaDB di bawah ini.

INSERT INTO users(firstname,lastname) VALUES ('Alice','Wonders');

Untuk memeriksa data Anda di server MariaDB, gunakan kueri “SELECT” seperti di bawah ini. Dan Anda akan melihat data yang baru saja Anda masukkan.

SELECT * FROM users;

Selanjutnya, pindah ke server “master2” dan masuk ke shell MariaDB menggunakan perintah “mysql” di bawah ini.

sudo mysql -u root -p

Periksa dan verifikasi daftar database di server “master2” menggunakan kueri berikut. Dan Anda harus mendapatkan database “testdb” yang baru saja Anda buat.

SHOW DATABASES;
USE testdb;

Selanjutnya, masukkan beberapa data lain ke database “testdb” dari server “master2“. Kemudian, periksa dan verifikasi data menggunakan kueri “SELECT“. Dan Anda harus memasukkan data baru dari server “master2“.

INSERT INTO users(firstname,lastname) VALUES ('Bob','Burgers');
SELECT * FROM users;

Sekarang kembali ke “master1” untuk memeriksa dan memverifikasi data baru yang baru saja Anda masukkan dari server “master2“. Jalankan kueri berikut untuk memeriksa data baru dari server “master1“. Dan Anda akan melihat data baru yang baru saja Anda masukkan dari server “master2” direplikasi ke server “master1“.

select @@hostname;
SELECT * FROM users;

Kesimpulan

Selamat! Anda sekarang telah berhasil menerapkan Replikasi Master-Master MariaDB di server Debian 11. Anda juga telah mengonfigurasi sinkronisasi waktu di server MariaDB menggunakan layanan Chrony. Selain itu, Anda juga telah mengamankan penerapan server MariaDB menggunakan firewall UFW. Pada akhirnya, Anda memiliki server MariaDB dengan replikasi otomatis antara dua server MariaDB, Anda dapat menulis di semua server MariaDB tersebut dan semua data akan direplikasi secara otomatis.

Untuk mendapatkan Berita & Review menarik Saksenengku Network
Google News

Artikel Terkait

Populer

Artikel Terbaru