Arsitektur dan tantangan basis data terdistribusi
Berikut adalah **Modul 11: Sistem Basis Data Terdistribusi**, dengan fokus pada **arsitektur** dan **tantangan** sistem basis data terdistribusi, serta **contoh konfigurasi replikasi MySQL di Ubuntu 24.04** sebagai salah satu implementasinya.
---
- 🌐 **Modul 11: Sistem Basis Data Terdistribusi**
- 📌 Topik: Arsitektur dan Tantangan Basis Data Terdistribusi
- 🌐 **Modul 11: Sistem Basis Data Terdistribusi**
---
- 🎯 **Tujuan Pembelajaran**
Setelah mempelajari modul ini, mahasiswa diharapkan mampu: - Memahami konsep dan arsitektur sistem basis data terdistribusi. - Menjelaskan tantangan dalam mengelola database yang tersebar. - Menerapkan contoh sistem terdistribusi menggunakan MySQL replikasi di Ubuntu 24.04.
---
- 🧠 **11.1 Apa Itu Basis Data Terdistribusi?**
- Basis data terdistribusi** adalah sistem database di mana data tersimpan di beberapa lokasi fisik berbeda, tetapi dikelola secara logis sebagai satu kesatuan sistem. Tiap lokasi disebut **node**.
---
- 🏗️ **11.2 Arsitektur Basis Data Terdistribusi**
| Arsitektur | Penjelasan | |--------------------|--------------------------------------------------------------------------| | **Homogeneous** | Semua node menggunakan DBMS yang sama (contoh: MySQL–MySQL) | | **Heterogeneous** | Node menggunakan DBMS berbeda (contoh: MySQL–PostgreSQL) | | **Client-Server** | Klien mengakses node tertentu melalui middleware | | **Peer-to-Peer** | Semua node saling berinteraksi secara setara | | **Replication-Based** | Data disalin (sinkron/async) antar node untuk meningkatkan keandalan |
---
- ⚠️ **11.3 Tantangan Basis Data Terdistribusi**
| Tantangan | Penjelasan | |----------------------------|------------------------------------------------------------------------------| | **1. Konsistensi Data** | Sinkronisasi data antar lokasi bisa menyebabkan konflik atau duplikasi | | **2. Keterlambatan (Latency)** | Performa terganggu karena jarak antar node dan waktu propagasi | | **3. Manajemen Replikasi** | Menentukan kapan dan bagaimana data disalin antar server | | **4. Keamanan dan Akses** | Data tersebar di banyak lokasi → meningkatkan risiko kebocoran | | **5. Ketersediaan dan Failover** | Node harus tetap aktif jika node lain gagal |
---
- 🛠️ **11.4 Contoh Implementasi MySQL Terdistribusi: Replikasi Master-Slave**
- 🎯 Tujuan:
- **Master** menerima semua operasi `INSERT`, `UPDATE`, `DELETE`. - **Slave** menyalin data secara real-time (read-only replica).
---
- 🧱 **Langkah Setup Replikasi MySQL di Ubuntu 24.04**
- 🔧 **1. Konfigurasi Server Master**
Edit `/etc/mysql/mysql.conf.d/mysqld.cnf`:
```ini [mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log bind-address = 0.0.0.0 ```
Restart MySQL:
```bash sudo systemctl restart mysql ```
Buat user replikasi:
```sql CREATE USER 'repl'@'%' IDENTIFIED BY 'replica123'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; ```
Ambil status log:
```sql SHOW MASTER STATUS; ```
Catat: `File` dan `Position`
---
- 🔧 **2. Konfigurasi Server Slave**
Edit `/etc/mysql/mysql.conf.d/mysqld.cnf`:
```ini [mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin ```
Restart:
```bash sudo systemctl restart mysql ```
Set konfigurasi replikasi:
```sql CHANGE MASTER TO
MASTER_HOST='ip_master', MASTER_USER='repl', MASTER_PASSWORD='replica123', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=12345;
START SLAVE; ```
---
- 🔍 **3. Verifikasi Replikasi**
```sql SHOW SLAVE STATUS\G ```
Periksa: - `Slave_IO_Running: Yes` - `Slave_SQL_Running: Yes`
---
- 📌 **11.5 Kesimpulan**
| Aspek | Penjelasan | |----------------------------|----------------------------------------------------------| | Arsitektur Umum | Homogen, heterogen, client-server, P2P, replikasi | | Tantangan Umum | Konsistensi, replikasi, keamanan, latency | | Contoh Implementasi | MySQL Master-Slave (replikasi async) | | Tools Ubuntu | `mysqldump`, `mysqlbinlog`, konfigurasi `mysqld.cnf` |
---
Kalau kamu mau lanjut ke **Modul 12: Fragmentasi dan Alokasi Data** atau ingin saya bantu buat **arsitektur replikasi MySQL multi-master**, tinggal bilang ya!