Jenis backup: full, incremental, differential: Difference between revisions

From OnnoCenterWiki
Jump to navigationJump to search
Created page with "Berikut adalah **Modul 10: Strategi Backup dan Recovery**, dengan fokus pada **jenis-jenis backup** — **full, incremental, dan differential** — lengkap dengan **contoh pen..."
 
No edit summary
 
Line 1: Line 1:
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**.
==Tujuan Pembelajaran==
 
---
 
## 💾 **Modul 10: Strategi Backup dan Recovery**
 
### 📌 Topik: Jenis Backup (Full, Incremental, Differential)
 
---
 
### 🎯 **Tujuan Pembelajaran**
Setelah mempelajari modul ini, mahasiswa diharapkan mampu:
Setelah mempelajari modul ini, mahasiswa diharapkan mampu:
- Memahami perbedaan jenis backup: full, incremental, dan differential.
* Memahami perbedaan jenis backup: full, incremental, dan differential.
- Menentukan strategi backup yang sesuai berdasarkan kebutuhan.
* Menentukan strategi backup yang sesuai berdasarkan kebutuhan.
- Mengimplementasikan jenis-jenis backup pada sistem MySQL di Ubuntu 24.04.
* Mengimplementasikan jenis-jenis backup pada sistem MySQL di Ubuntu 24.04.


---


## 🧠 **10.1 Mengapa Backup Itu Penting?**
==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


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


---
==Jenis Backup==


## 🧩 **10.2 Jenis Backup**
{| class="wikitable"
! 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
|}


| 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**
==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.
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**
1. '''Full Backup'''


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


### 🔄 2. **Incremental Backup (dengan binary log)**
2. '''Incremental Backup (dengan binary log)'''


Langkah:
Langkah:


#### a. Aktifkan Binary Logging di `/etc/mysql/mysql.conf.d/mysqld.cnf`
a. Aktifkan Binary Logging di `/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
binlog_format=ROW
binlog_format=ROW
```


Restart MySQL:
Restart MySQL:


```bash
sudo systemctl restart mysql
sudo systemctl restart mysql
```
 
#### b. Backup binary log (incremental data)


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


> **Catatan**: Binary log harus disimpan sejak **backup penuh terakhir**.
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)**
3. '''Differential Backup (menggunakan timestamp)'''


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


```bash
mysqldump -u root -p --databases universitas \
mysqldump -u root -p --databases universitas \
--where="last_modified > '2025-04-01 00:00:00'" > /backup/differential_$(date +%F).sql
--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.
> Harus ada kolom `last_modified` atau `updated_at` di setiap tabel.
Line 89: Line 68:
Contoh skema:
Contoh skema:


```sql
CREATE TABLE mahasiswa (
CREATE TABLE mahasiswa (
    nim VARCHAR(10) PRIMARY KEY,
    nim VARCHAR(10) PRIMARY KEY,
    nama VARCHAR(100),
    nama VARCHAR(100),
    last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
);
```


---


## 🔁 **10.4 Restore Backup**
==Restore Backup==


### 🔄 Restore Full Backup
Restore Full Backup


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


### 🔄 Restore Incremental
Restore Incremental


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


> Harus di-apply setelah restore full.
> Harus di-apply setelah restore full.


---


## 📌 **10.5 Ringkasan**
==Ringkasan==
 
{| class="wikitable"
! 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`
|}


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


---
==Pranala Menarik==


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

Latest revision as of 01:36, 21 April 2025

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.


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


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


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

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`

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

Restart MySQL:

sudo systemctl restart mysql

b. Backup binary log (incremental data)

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:

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:

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


Restore Backup

Restore Full Backup

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

Restore Incremental

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

> Harus di-apply setelah restore full.


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`


Pranala Menarik