Difference between revisions of "Arsitektur dan tantangan basis data terdistribusi"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Berikut adalah **Modul 11: Sistem Basis Data Terdistribusi**, dengan fokus pada **arsitektur** dan **tantangan** sistem basis data terdistribusi, serta **contoh konfigurasi re...")
 
Line 1: Line 1:
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.
+
Berikut adalah '''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** 
+
==Sistem Basis Data Terdistribusi==
### 📌 Topik: Arsitektur dan Tantangan Basis Data Terdistribusi
+
Arsitektur dan Tantangan Basis Data Terdistribusi
  
---
 
  
### 🎯 **Tujuan Pembelajaran**
+
 
 +
==Tujuan Pembelajaran==
 
Setelah mempelajari modul ini, mahasiswa diharapkan mampu:
 
Setelah mempelajari modul ini, mahasiswa diharapkan mampu:
- Memahami konsep dan arsitektur sistem basis data terdistribusi.
+
* Memahami konsep dan arsitektur sistem basis data terdistribusi.
- Menjelaskan tantangan dalam mengelola database yang tersebar.
+
* Menjelaskan tantangan dalam mengelola database yang tersebar.
- Menerapkan contoh sistem terdistribusi menggunakan MySQL replikasi di Ubuntu 24.04.
+
* 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                                                              |
+
==Apa Itu Basis Data Terdistribusi?==
|--------------------|--------------------------------------------------------------------------|
 
| **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 |
 
  
---
+
'''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.3 Tantangan Basis Data Terdistribusi**
+
==Arsitektur Basis Data Terdistribusi==
  
| Tantangan                  | Penjelasan                                                                 |
+
{| class="wikitable"
|----------------------------|------------------------------------------------------------------------------|
+
! Arsitektur        !! 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            |
+
| '''Homogeneous'''    || Semua node menggunakan DBMS yang sama (contoh: MySQL–MySQL)
| **3. Manajemen Replikasi** | Menentukan kapan dan bagaimana data disalin antar server                  |
+
|-
| **4. Keamanan dan Akses**  | Data tersebar di banyak lokasi → meningkatkan risiko kebocoran              |
+
| '''Heterogeneous'''  || Node menggunakan DBMS berbeda (contoh: MySQL–PostgreSQL)
| **5. Ketersediaan dan Failover** | Node harus tetap aktif jika node lain gagal                            |
+
|-
 +
| '''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
 +
|}
  
---
+
==Tantangan Basis Data Terdistribusi==
  
## 🛠️ **11.4 Contoh Implementasi MySQL Terdistribusi: Replikasi Master-Slave**
+
{| class="wikitable"
 +
! 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
 +
|}
  
### 🎯 Tujuan:
+
==Contoh Implementasi MySQL Terdistribusi: Replikasi Master-Slave==
- **Master** menerima semua operasi `INSERT`, `UPDATE`, `DELETE`.
 
- **Slave** menyalin data secara real-time (read-only replica).
 
  
---
+
'''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**
+
===Langkah Setup Replikasi MySQL di Ubuntu 24.04===
  
### 🔧 **1. Konfigurasi Server Master**
+
'''1. Konfigurasi Server Master'''
  
 
Edit `/etc/mysql/mysql.conf.d/mysqld.cnf`:
 
Edit `/etc/mysql/mysql.conf.d/mysqld.cnf`:
  
```ini
+
[mysqld]
[mysqld]
+
server-id = 1
server-id = 1
+
log_bin = /var/log/mysql/mysql-bin.log
log_bin = /var/log/mysql/mysql-bin.log
+
bind-address = 0.0.0.0
bind-address = 0.0.0.0
 
```
 
  
 
Restart MySQL:
 
Restart MySQL:
  
```bash
+
sudo systemctl restart mysql
sudo systemctl restart mysql
 
```
 
  
 
Buat user replikasi:
 
Buat user replikasi:
  
```sql
+
CREATE USER 'repl'@'%' IDENTIFIED BY 'replica123';
CREATE USER 'repl'@'%' IDENTIFIED BY 'replica123';
+
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
+
FLUSH PRIVILEGES;
FLUSH PRIVILEGES;
 
```
 
  
 
Ambil status log:
 
Ambil status log:
  
```sql
+
SHOW MASTER STATUS;
SHOW MASTER STATUS;
 
```
 
  
 
Catat: `File` dan `Position`
 
Catat: `File` dan `Position`
  
---
+
'''2. Konfigurasi Server Slave'''
 
 
### 🔧 **2. Konfigurasi Server Slave**
 
  
 
Edit `/etc/mysql/mysql.conf.d/mysqld.cnf`:
 
Edit `/etc/mysql/mysql.conf.d/mysqld.cnf`:
  
```ini
+
[mysqld]
[mysqld]
+
server-id = 2
server-id = 2
+
relay-log = /var/log/mysql/mysql-relay-bin
relay-log = /var/log/mysql/mysql-relay-bin
 
```
 
  
 
Restart:
 
Restart:
  
```bash
+
sudo systemctl restart mysql
sudo systemctl restart mysql
 
```
 
  
 
Set konfigurasi replikasi:
 
Set konfigurasi replikasi:
  
```sql
+
CHANGE MASTER TO
CHANGE MASTER TO
+
  MASTER_HOST='ip_master',
  MASTER_HOST='ip_master',
+
  MASTER_USER='repl',
  MASTER_USER='repl',
+
  MASTER_PASSWORD='replica123',
  MASTER_PASSWORD='replica123',
+
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_FILE='mysql-bin.000001',
+
  MASTER_LOG_POS=12345;  
  MASTER_LOG_POS=12345;
+
 
+
START SLAVE;
START SLAVE;
 
```
 
 
 
---
 
  
### 🔍 **3. Verifikasi Replikasi**
+
'''3. Verifikasi Replikasi'''
  
```sql
+
SHOW SLAVE STATUS\G
SHOW SLAVE STATUS\G
 
```
 
  
 
Periksa:
 
Periksa:
- `Slave_IO_Running: Yes`
+
* `Slave_IO_Running: Yes`
- `Slave_SQL_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`    |
 
  
---
+
==Kesimpulan==
  
Kalau kamu mau lanjut ke **Modul 12: Fragmentasi dan Alokasi Data** atau ingin saya bantu buat **arsitektur replikasi MySQL multi-master**, tinggal bilang ya!
+
{| class="wikitable"
 +
! 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`
 +
|}

Revision as of 10:42, 6 May 2025

Berikut adalah 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.


Sistem Basis Data Terdistribusi

Arsitektur dan Tantangan 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.

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.

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

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

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`:

[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
bind-address = 0.0.0.0

Restart MySQL:

sudo systemctl restart mysql

Buat user replikasi:

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

Ambil status log:

SHOW MASTER STATUS;

Catat: `File` dan `Position`

2. Konfigurasi Server Slave

Edit `/etc/mysql/mysql.conf.d/mysqld.cnf`:

[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin

Restart:

sudo systemctl restart mysql

Set konfigurasi replikasi:

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

SHOW SLAVE STATUS\G

Periksa:

  • `Slave_IO_Running: Yes`
  • `Slave_SQL_Running: Yes`

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`