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