Jenis backup: full, incremental, differential
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**.
---
- ๐พ **Modul 10: Strategi Backup dan Recovery**
- ๐ Topik: Jenis Backup (Full, Incremental, Differential)
---
- ๐ฏ **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.
---
- ๐ง **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
---
- ๐งฉ **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 |
---
- ๐ ๏ธ **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. **Full Backup**
```bash mysqldump -u root -p --databases universitas > /backup/full_backup_$(date +%F).sql ```
- ๐ 2. **Incremental Backup (dengan binary log)**
Langkah:
- 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 ```
- 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**.
---
- ๐ 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
); ```
---
- ๐ **10.4 Restore Backup**
- ๐ Restore Full Backup
```bash mysql -u root -p < /backup/full_backup_2025-04-10.sql ```
- ๐ Restore Incremental
```bash mysql -u root -p < /backup/incremental_2025-04-10_13-00-00.sql ```
> Harus di-apply setelah restore full.
---
- ๐ **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!