Backup and Restore

Backup and Restore #

Dalam dunia sistem terdistribusi dan aplikasi modern, database adalah single source of truth. Kehilangan data—baik sebagian maupun seluruhnya—sering kali berarti downtime panjang, kerugian finansial, dan hilangnya kepercayaan pengguna. Di sinilah konsep backup dan restore database menjadi pilar utama dalam reliability, availability, dan disaster recovery sebuah sistem.

Artikel ini akan membahas secara mendalam:

  • Apa itu backup dan restore database
  • Mekanisme teknis di baliknya
  • Kenapa backup & restore sangat krusial bagi sistem
  • Best practice implementasi di lingkungan produksi

Apa Itu Backup Database? #

Backup database adalah proses membuat salinan data dari database pada titik waktu tertentu (point in time) untuk tujuan pemulihan (restore) jika terjadi kegagalan.

Backup bukan sekadar menyalin file database, melainkan menangkap kondisi data yang konsisten sesuai dengan mekanisme database engine.

Tujuan Backup #

  • Pemulihan data akibat human error (DELETE tanpa WHERE 😅)
  • Pemulihan akibat bug aplikasi
  • Proteksi dari hardware failure
  • Proteksi dari serangan (ransomware, data corruption)
  • Migrasi data

Apa Itu Restore Database? #

Restore database adalah proses mengembalikan database ke kondisi tertentu menggunakan data hasil backup.

Restore bisa berarti:

  • Mengembalikan seluruh database
  • Mengembalikan sebagian data (table / schema)
  • Mengembalikan database ke waktu tertentu (point-in-time recovery)

Backup tidak ada artinya tanpa proses restore yang teruji.


Jenis-Jenis Backup Database #

Full Backup #

Backup seluruh isi database.

Kelebihan:

  • Paling mudah direstore
  • Risiko data hilang paling kecil

Kekurangan:

  • Waktu lama
  • Ukuran besar
  • Beban IO tinggi

Biasanya dilakukan harian atau mingguan.

Incremental Backup #

Hanya membackup perubahan sejak backup terakhir.

Kelebihan:

  • Cepat
  • Ukuran kecil

Kekurangan:

  • Restore lebih kompleks (butuh urutan backup)

Differential Backup #

Backup semua perubahan sejak full backup terakhir.

Trade-off antara full dan incremental.

Logical Backup #

Backup dalam bentuk SQL / logical dump.

Contoh:

  • mysqldump
  • pg_dump

Karakteristik:

  • Portable (bisa lintas versi)
  • Mudah diinspeksi
  • Lebih lambat untuk database besar

Physical Backup #

Backup file fisik database (data files, WAL, binlog).

Contoh:

  • Snapshot disk
  • Percona XtraBackup
  • LVM snapshot

Karakteristik:

  • Cepat
  • Cocok untuk database besar
  • Sangat bergantung pada engine dan versi

Mekanisme Backup di Level Database #

Konsistensi Data #

Backup harus konsisten.

Masalah umum:

  • Backup dilakukan saat ada transaksi berjalan
  • Data setengah commit

Solusi:

  • Transaction snapshot
  • MVCC (PostgreSQL, InnoDB)
  • Lock table (opsi terakhir)

Write-Ahead Logging (WAL / Binlog) #

Database modern menggunakan log sebelum commit.

Ini memungkinkan:

  • Incremental backup
  • Point-in-time recovery (PITR)

Alur sederhananya:

  1. Full backup
  2. Simpan log perubahan (WAL/binlog)
  3. Restore full backup
  4. Replay log sampai waktu tertentu

Kenapa Backup & Restore Sangat Penting? #

Human Error Lebih Sering dari yang Kita Kira #

Statistik internal banyak perusahaan menunjukkan:

Human error adalah penyebab utama kehilangan data, bukan hardware failure.

Bug Aplikasi Tidak Bisa Dihindari #

  • Migration script salah
  • Logic update keliru
  • Race condition

Backup adalah last line of defense.

Serangan dan Keamanan #

  • Ransomware
  • Insider threat
  • Credential leak

Tanpa backup terisolasi, recovery hampir mustahil.

Compliance dan Audit #

Beberapa regulasi mewajibkan backup:

  • Retensi data
  • Disaster recovery plan

Best Practice Backup Database #

Backup Bukan Sekadar Ada, Tapi Teruji #

Backup yang tidak pernah direstore = tidak ada backup.

Best practice:

  • Lakukan restore test berkala
  • Simulasikan skenario disaster

Pisahkan Lokasi Backup #

Jangan simpan backup di:

  • Server yang sama
  • Disk yang sama

Gunakan:

  • Object storage (S3, GCS)
  • Cross-region backup

Enkripsi Backup #

Backup sering berisi data paling sensitif.

Wajib:

  • Encryption at rest
  • Encryption in transit
  • Rotasi key

Gunakan Retention Policy #

Contoh:

  • Daily backup: simpan 7 hari
  • Weekly backup: simpan 1 bulan
  • Monthly backup: simpan 1 tahun

Hindari:

  • Backup menumpuk tanpa kontrol

Perhatikan Beban ke Database Produksi #

Backup bisa:

  • Menghabiskan IO
  • Memperlambat query

Solusi:

  • Backup dari replica
  • Throttling IO
  • Jadwalkan di off-peak hour

Sesuaikan Strategi dengan Ukuran Data #

Skala DataStrategi
KecilLogical backup
MenengahFull + incremental
BesarPhysical + WAL

Dokumentasikan Prosedur Restore #

Saat incident terjadi:

  • Waktu sangat mahal

Dokumentasi harus mencakup:

  • Langkah restore
  • Estimasi waktu
  • Risiko dan rollback plan

Kesalahan Umum dalam Backup & Restore #

  • Mengandalkan snapshot tanpa uji restore
  • Tidak menyimpan WAL/binlog
  • Backup sukses tapi corrupt
  • Tidak tahu RTO dan RPO sistem

Penutup #

Backup dan restore bukan fitur tambahan, melainkan fondasi reliability sistem. Sistem tanpa strategi backup yang matang hanyalah soal kapan, bukan apakah, akan mengalami kehilangan data.

Pendekatan yang benar adalah:

  • Desain sejak awal
  • Sesuai skala dan risiko
  • Teruji secara rutin

Backup adalah asuransi. Restore adalah klaimnya.

Tanpa keduanya, sistem berjalan di atas waktu yang dipinjam.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact