## Panduan Instalasi MariaDB Galera Cluster di Ubuntu 18.04
Database clustering adalah proses penggabungan beberapa server untuk memastikan ketersediaan tinggi dan replikasi data yang konsisten antar server. **MariaDB Galera** adalah solusi clustering multi-master yang memastikan replikasi data secara real-time ke semua node dalam cluster.
Panduan ini akan membantu Anda dalam menginstal dan mengkonfigurasi **MariaDB Galera Cluster** pada Ubuntu 18.04 dengan 3 node.
### Prasyarat
- Minimal 2 node (disarankan 3 node untuk keandalan tinggi).
- Tiga server **Ubuntu 18.04** dengan hak akses root.
- IP Address server:
- `galera-db-01`: 172.18.141.166
- `galera-db-02`: 172.18.141.167
- `galera-db-03`: 172.18.141.180
### Langkah 1 – Instalasi MariaDB Server di Semua Server
Tambahkan repository **MariaDB** dan instal **MariaDB** pada ketiga node dengan perintah berikut:
```bash
apt-get install software-properties-common
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.5/ubuntu $(lsb_release -cs) main"
apt-get update -y
apt-get install mariadb-server -y
```
Konfigurasikan kata sandi root **MariaDB** dengan menjalankan `mysql_secure_installation`.
### Langkah 2 – Konfigurasi Setiap Server di Cluster
Setiap server **MariaDB** memerlukan konfigurasi khusus agar dapat terhubung sebagai cluster **Galera**. Lakukan konfigurasi berikut pada setiap node.
#### Konfigurasi pada Server 1 (galera-db-01)
Edit file `/etc/mysql/conf.d/galera.cnf` dan tambahkan konfigurasi:
```ini
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="mariadb_galera_cluster"
wsrep_cluster_address="gcomm://172.18.141.166,172.18.141.167,172.18.141.180"
wsrep_sst_method=rsync
wsrep_node_address="172.18.141.166"
wsrep_node_name="galera-db-01"
```
#### Konfigurasi pada Server 2 (galera-db-02)
```ini
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="mariadb_galera_cluster"
wsrep_cluster_address="gcomm://172.18.141.166,172.18.141.167,172.18.141.180"
wsrep_sst_method=rsync
wsrep_node_address="172.18.141.167"
wsrep_node_name="galera-db-02"
```
#### Konfigurasi pada Server 3 (galera-db-03)
```ini
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="mariadb_galera_cluster"
wsrep_cluster_address="gcomm://172.18.141.166,172.18.141.167,172.18.141.180"
wsrep_sst_method=rsync
wsrep_node_address="172.18.141.180"
wsrep_node_name="galera-db-03"
```
### Langkah 3 – Inisialisasi Galera Cluster
Berhentikan layanan **MariaDB** di semua node:
```bash
systemctl stop mariadb
```
Inisialisasi cluster pada **galera-db-01** dengan perintah:
```bash
galera_new_cluster
```
Verifikasi **node pertama** dengan:
```bash
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
```
Nyalakan **MariaDB** di **galera-db-02** dan **galera-db-03**:
```bash
systemctl start mariadb
```
Verifikasi bahwa ketiga node telah bergabung ke cluster dengan perintah yang sama.
### Langkah 4 – Pengujian Replikasi Cluster
Buat database pada **galera-db-01**:
```bash
mysql -u root -p
create database galera_test;
exit;
```
Periksa replikasi database pada **galera-db-02** dan **galera-db-03**:
```bash
mysql -u root -p -e "SHOW DATABASES;"
```
Database **galera_test** harus muncul di semua node.
### Langkah 6 – Verifikasi Cluster
Cek ukuran cluster di setiap node dengan menjalankan perintah berikut:
```bash
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
```
Anda akan melihat output seperti ini:
```
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| wsrep_cluster_size| 3 |
+-------------------+-------+
```
Pengujian replikasi dapat dilakukan dengan membuat database di salah satu node:
```bash
CREATE DATABASE test_cluster;
```
Lalu, cek database tersebut di node lain untuk memastikan replikasi berjalan baik:
```bash
mysql -u root -p -e "SHOW DATABASES;"
```
### Langkah 7 – Penanganan Firewall
Pastikan bahwa port berikut terbuka di firewall untuk memastikan komunikasi antar node **Galera**:
- **Port 3306**: MySQL/MariaDB
- **Port 4567**: Galera replication traffic
- **Port 4568**: Galera Incremental State Transfer (IST)
- **Port 4444**: Galera State Snapshot Transfer (SST)
### Langkah 8 – Troubleshooting
Jika terjadi masalah, Anda dapat melihat status cluster dan node dengan menjalankan:
```bash
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_%';"
```
Informasi seperti status sinkronisasi, ukuran cluster, dan apakah node siap menerima query akan ditampilkan. Misalnya, Anda dapat melihat apakah **wsrep_ready** bernilai **ON**, yang berarti node siap digunakan.
### Kesimpulan
🎉 **Selamat!** Anda telah berhasil menginstal dan mengkonfigurasi MariaDB Galera Cluster di Ubuntu 18.04. 🎊 Dengan pengaturan ini, Anda mendapatkan replikasi data yang kuat antar node, memastikan database Anda selalu tersedia dan sinkron. ✨ Semua langkah dari instalasi hingga pengujian telah sukses dilakukan, dan cluster telah berjalan dengan baik. 🥳🥇
---
**Semoga sukses terus dengan proyek Anda!**