Arsitektur dan tantangan basis data terdistribusi

From OnnoWiki
Jump to navigation Jump to search

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.

---

    1. 🌐 **Modul 11: Sistem Basis Data Terdistribusi**
      1. 📌 Topik: Arsitektur dan Tantangan Basis Data Terdistribusi

---

      1. 🎯 **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.

---

    1. 🧠 **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**.

---

    1. 🏗️ **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 |

---

    1. ⚠️ **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 |

---

    1. 🛠️ **11.4 Contoh Implementasi MySQL Terdistribusi: Replikasi Master-Slave**
      1. 🎯 Tujuan:

- **Master** menerima semua operasi `INSERT`, `UPDATE`, `DELETE`. - **Slave** menyalin data secara real-time (read-only replica).

---

    1. 🧱 **Langkah Setup Replikasi MySQL di Ubuntu 24.04**
      1. 🔧 **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`

---

      1. 🔧 **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; ```

---

      1. 🔍 **3. Verifikasi Replikasi**

```sql SHOW SLAVE STATUS\G ```

Periksa: - `Slave_IO_Running: Yes` - `Slave_SQL_Running: Yes`

---

    1. 📌 **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!