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