Penanganan kegagalan dan pemulihan

From OnnoWiki
Revision as of 09:08, 13 April 2025 by Onnowpurbo (talk | contribs) (Created page with "Berikut adalah lanjutan dari **Modul 6: Transaksi dan Manajemen Konsistensi**, dengan fokus pada **Penanganan Kegagalan dan Pemulihan** dalam transaksi basis data menggunakan...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Berikut adalah lanjutan dari **Modul 6: Transaksi dan Manajemen Konsistensi**, dengan fokus pada **Penanganan Kegagalan dan Pemulihan** dalam transaksi basis data menggunakan **MySQL di Ubuntu 24.04**.

---

    1. 🧠 **Modul 6 (Lanjutan): Transaksi dan Manajemen Konsistensi**
      1. 🎯 **Tujuan Pembelajaran**

Setelah mempelajari bagian ini, mahasiswa diharapkan mampu: - Menjelaskan jenis kegagalan dalam transaksi database. - Memahami strategi pemulihan menggunakan fitur MySQL. - Mengimplementasikan pemulihan dengan rollback dan log transaksi (binlog) pada MySQL.

---

    1. ⚠️ **6.8 Jenis Kegagalan dalam Transaksi**

1. **Kegagalan Sistem (System Crash)**

  - Mati listrik, reboot sistem, atau server MySQL tidak responsif.

2. **Kegagalan Transaksi (Logical Failure)**

  - Kesalahan perhitungan, query salah tulis, atau data tidak valid.

3. **Kegagalan Disk (Disk Failure)**

  - Kerusakan hardware seperti hard disk crash atau corrupt file system.

---

    1. 🛠 **6.9 Penanganan Kegagalan: ROLLBACK**
      1. ✅ Contoh Kegagalan Transaksi dan ROLLBACK

Misalkan Anda ingin memindahkan uang antar dua rekening:

```sql START TRANSACTION;

UPDATE rekening SET saldo = saldo - 20000 WHERE id = 1;

-- Simulasi kesalahan (misalnya tabel tidak ada atau salah ketik) UPDATE rekeningsalah SET saldo = saldo + 20000 WHERE id = 2;

-- Karena baris kedua gagal, gunakan rollback: ROLLBACK; ```

> Hasilnya: Tidak ada perubahan saldo. Transaksi dibatalkan sepenuhnya (atomicity dijaga).

---

    1. 🧩 **6.10 Fitur Pemulihan MySQL: Binary Log**
    • Binary Log (binlog)** menyimpan semua statement yang mengubah data (DML) dan dapat digunakan untuk:

- **Recovery** data setelah crash - **Replikasi** antar server - **Audit log transaksi**

      1. 🔍 Mengecek Status Binary Log

```bash sudo mysql -u root -p SHOW VARIABLES LIKE 'log_bin'; ```

Jika belum aktif, aktifkan di file konfigurasi:

      1. 🔧 Aktifkan Binary Log di Ubuntu 24.04

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

```ini [mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_format = ROW ```

Kemudian restart MySQL:

```bash sudo systemctl restart mysql ```

---

    1. 🔄 **6.11 Pemulihan dengan Binary Log**

Jika terjadi crash, Anda bisa:

1. **Restore backup** terakhir 2. **Re-apply log** dari binary log menggunakan:

```bash mysqlbinlog /var/log/mysql/mysql-bin.000001 | mysql -u root -p ```

> Ini akan memutar ulang semua transaksi yang sudah di-*commit* sebelum crash.

---

    1. 🔁 **6.12 Autocommit dan Crash Protection**
      1. 🔹 Cek Autocommit:

```sql SHOW VARIABLES LIKE 'autocommit'; ```

Jika `ON`, setiap perintah `INSERT`, `UPDATE`, `DELETE` langsung *commit* otomatis.

> Untuk transaksi yang aman, **gunakan `START TRANSACTION` dan `COMMIT`/`ROLLBACK` manual**, agar bisa dikontrol.

---

    1. 📌 **6.13 Kesimpulan**

- Transaksi harus mampu pulih dari kegagalan demi menjaga integritas data. - MySQL mendukung pemulihan transaksi menggunakan `ROLLBACK` dan fitur `binary log`. - Binary log harus diaktifkan secara manual untuk mendukung **point-in-time recovery** dan replikasi. - Selalu gunakan `START TRANSACTION` untuk transaksi kritis agar dapat dikendalikan secara eksplisit.

---

Kalau kamu mau saya bantu buat simulasi **pemulihan data dari backup + binary log**, atau skrip **auto-rollback** pakai stored procedure, tinggal bilang aja ya!