Difference between revisions of "Jenis backup: full, incremental, differential"
Onnowpurbo (talk | contribs)  (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...")  | 
				Onnowpurbo (talk | contribs)   | 
				||
| Line 1: | Line 1: | ||
| − | + | ==Tujuan Pembelajaran==  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Setelah mempelajari modul ini, mahasiswa diharapkan mampu:  | 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==  | |
| − | + | {| 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  | ||
| + | |}  | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ==Implementasi di MySQL Ubuntu 24.04==  | |
| − | Untuk backup, kita bisa gunakan `mysqldump` (standar) atau `mysqlbackup` (dari MySQL Enterprise). Kali ini kita fokus pada   | + | 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  | |
| − | mysqldump -u root -p --databases universitas > /backup/full_backup_$(date +%F).sql  | ||
| − | |||
| − | + | 2. '''Incremental Backup (dengan binary log)'''  | |
Langkah:  | Langkah:  | ||
| − | + | a. Aktifkan Binary Logging di `/etc/mysql/mysql.conf.d/mysqld.cnf`  | |
| − | + |  [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:  | ||
| − | + |  sudo systemctl 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:  | Jika kita mencatat waktu terakhir backup full, kita bisa backup hanya data yang berubah setelah waktu tersebut:  | ||
| − | + |  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:  | ||
| − | + |  CREATE TABLE mahasiswa (  | |
| − | 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  | |
| − | 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  | |
| − | 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.  | ||
| − | |||
| − | + | ==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`  | ||
| + | |}  | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ==Pranala Menarik==  | |
| − | + | * [[Database: Kuliah]]  | |
Latest revision as of 08: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` |