Jenis backup: full, incremental, differential

From OnnoWiki
Revision as of 08:36, 21 April 2025 by Onnowpurbo (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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