Jenis backup: full, incremental, differential

From OnnoWiki
Jump to navigation Jump to search

Berikut adalah **Modul 10: Strategi Backup dan Recovery**, dengan fokus pada **jenis-jenis backup** โ€” **full, incremental, dan differential** โ€” lengkap dengan **contoh penerapan di MySQL Ubuntu 24.04**.

---

    1. ๐Ÿ’พ **Modul 10: Strategi Backup dan Recovery**
      1. ๐Ÿ“Œ Topik: Jenis Backup (Full, Incremental, Differential)

---

      1. ๐ŸŽฏ **Tujuan Pembelajaran**

Setelah mempelajari modul ini, mahasiswa diharapkan mampu: - Memahami perbedaan jenis backup: full, incremental, dan differential. - Menentukan strategi backup yang sesuai berdasarkan kebutuhan. - Mengimplementasikan jenis-jenis backup pada sistem MySQL di Ubuntu 24.04.

---

    1. ๐Ÿง  **10.1 Mengapa Backup Itu Penting?**

Backup database mencegah kehilangan data akibat: - Kerusakan sistem (hardware failure) - Kesalahan pengguna (human error) - Serangan siber (ransomware, malware) - Korupsi data atau kerusakan aplikasi

---

    1. ๐Ÿงฉ **10.2 Jenis Backup**

| Jenis Backup | Definisi | Keunggulan | Kekurangan | |------------------|--------------------------------------------------------------------------|-------------------------------|-------------------------------| | **Full** | Salinan lengkap seluruh database | Mudah restore, lengkap | Waktu dan ruang besar | | **Incremental** | Backup data yang berubah sejak backup **terakhir** (full/incremental) | Cepat dan hemat ruang | Restore lambat (butuh semua incremental) | | **Differential** | Backup data yang berubah sejak **backup full terakhir** | Restore lebih cepat dari incremental | Lebih besar dari incremental |

---

    1. ๐Ÿ› ๏ธ **10.3 Implementasi di MySQL Ubuntu 24.04**

Untuk backup, kita bisa gunakan `mysqldump` (standar) atau `mysqlbackup` (dari MySQL Enterprise). Kali ini kita fokus pada **`mysqldump`** karena gratis dan tersedia secara default.

      1. ๐Ÿ“ฆ 1. **Full Backup**

```bash mysqldump -u root -p --databases universitas > /backup/full_backup_$(date +%F).sql ```

      1. ๐Ÿ”„ 2. **Incremental Backup (dengan binary log)**

Langkah:

        1. a. Aktifkan Binary Logging di `/etc/mysql/mysql.conf.d/mysqld.cnf`

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

Restart MySQL:

```bash sudo systemctl restart mysql ```

        1. b. Backup binary log (incremental data)

```bash mysqlbinlog /var/log/mysql/mysql-bin.000001 > /backup/incremental_$(date +%F_%T).sql ```

> **Catatan**: Binary log harus disimpan sejak **backup penuh terakhir**.

---

      1. ๐Ÿ” 3. **Differential Backup (menggunakan timestamp)**

Jika kita mencatat waktu terakhir backup full, kita bisa backup hanya data yang berubah setelah waktu tersebut:

```bash mysqldump -u root -p --databases universitas \ --where="last_modified > '2025-04-01 00:00:00'" > /backup/differential_$(date +%F).sql ```

> Harus ada kolom `last_modified` atau `updated_at` di setiap tabel.

Contoh skema:

```sql CREATE TABLE mahasiswa (

   nim VARCHAR(10) PRIMARY KEY,
   nama VARCHAR(100),
   last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

); ```

---

    1. ๐Ÿ” **10.4 Restore Backup**
      1. ๐Ÿ”„ Restore Full Backup

```bash mysql -u root -p < /backup/full_backup_2025-04-10.sql ```

      1. ๐Ÿ”„ Restore Incremental

```bash mysql -u root -p < /backup/incremental_2025-04-10_13-00-00.sql ```

> Harus di-apply setelah restore full.

---

    1. ๐Ÿ“Œ **10.5 Ringkasan**

| Jenis Backup | Perintah & Tools | |------------------|---------------------------------------------------------| | Full | `mysqldump --databases db > full.sql` | | Incremental | `mysqlbinlog binlog > incremental.sql` | | Differential | `mysqldump --where="timestamp > last_backup"` | | Restore | `mysql < backup.sql` |

---

Kalau kamu ingin saya bantu lanjut ke **Modul 11: Replikasi dan High Availability**, atau membuat **skrip cron otomatis backup harian & mingguan**, tinggal bilang saja!