Paket 2 · Praktik LanjutanModul F — Database, Backup & Disaster Recovery

Backup, Restore & Recovery Strategy

Menentukan RPO/RTO, memilih backup logical atau physical, WAL/PITR, retensi, enkripsi, dan menguji restore.

Backup yang tidak pernah diuji restore bukan backup. Strategi pemulihan harus menjawab dua pertanyaan: berapa data yang boleh hilang dan berapa lama layanan boleh mati.

RPO dan RTO

IstilahArti
RPO (Recovery Point Objective)Maksimum data yang boleh hilang
RTO (Recovery Time Objective)Maksimum waktu pemulihan

Contoh:

  • RPO 15 menit → backup/WAL harus memungkinkan pemulihan hingga 15 menit terakhir.
  • RTO 1 jam → prosedur restore harus selesai dalam 1 jam.

Jenis backup

JenisCaraKelebihanKekurangan
Logicalpg_dumpFleksibel, portabelLambat untuk database besar
Physicalpg_basebackupCepat restore penuhTerikat versi/arsitektur
WAL archivingContinu WALPITRPerlu storage dan konfigurasi
Snapshot storageSnapshot volumeCepatBergantung storage

pg_dump

pg_dump -Fc -h 10.10.10.20 -U app -d app -f /backup/app-$(date +%F).dump

Restore:

createdb -h 10.10.10.20 -U app app_restore
pg_restore -h 10.10.10.20 -U app -d app_restore /backup/app-2026-10-20.dump

Backup logical cocok untuk database kecil–menengah dan migrasi.

Physical backup

pg_basebackup -h 10.10.10.20 -U replicator -D /backup/base \
  -Ft -z -Xs -P

Restore membutuhkan prosedur khusus dan biasanya menggantikan seluruh data directory.

WAL dan PITR

Aktifkan archiving:

wal_level = replica
archive_mode = on
archive_command = 'test ! -f /backup/wal/%f && cp %p /backup/wal/%f'

Dengan base backup + WAL, Anda dapat melakukan Point-in-Time Recovery ke detik tertentu.

PITR menyelamatkan dari kesalahan manusia

Jika tabel terhapus pada 10:05, PITR memungkinkan restore ke 10:04. Backup harian saja mungkin kehilangan beberapa jam data.

Retensi

Kebijakan umum:

  • Backup harian: 7–14 hari.
  • Backup mingguan: 4–8 minggu.
  • Backup bulanan: 6–12 bulan.
  • Simpan minimal satu salinan offsite.

Sesuaikan dengan kebutuhan bisnis dan regulasi.

3-2-1 rule

  • 3 salinan data.
  • 2 media/lokasi berbeda.
  • 1 salinan offsite.

Backup di server yang sama bukan perlindungan jika server/storage rusak.

Enkripsi

gpg --symmetric --cipher-algo AES256 backup.dump

Atau gunakan enkripsi storage bucket. Simpan kunci terpisah dari backup.

Otomasi backup

Contoh cron:

0 2 * * * /usr/local/bin/backup-db.sh >> /var/log/backup-db.log 2>&1

Skrip harus:

  • Gagal dengan exit code jika backup gagal.
  • Menghapus backup lama sesuai retensi.
  • Mengirim notifikasi.
  • Memverifikasi ukuran/file.
#!/usr/bin/env bash
set -euo pipefail
STAMP=$(date +%F-%H%M)
pg_dump -Fc -h 10.10.10.20 -U app -d app -f "/backup/app-$STAMP.dump"
find /backup -name 'app-*.dump' -mtime +14 -delete

Menguji restore

Lakukan minimal bulanan:

  1. Siapkan database/VM percobaan.
  2. Restore backup terbaru.
  3. Jalankan query verifikasi.
  4. Bandingkan jumlah baris/data penting.
  5. Catat waktu restore (RTO aktual).
  6. Perbaiki prosedur jika gagal.
pg_restore -l backup.dump | head
pg_restore -d app_restore backup.dump

Recovery runbook

Simpan:

  • Lokasi backup dan kredensial.
  • Perintah restore.
  • Urutan langkah.
  • Kontak penanggung jawab.
  • Kriteria sukses.
  • Waktu yang dibutuhkan.

Ringkasan

  • Tentukan RPO/RTO sebelum memilih strategi.
  • Gunakan kombinasi logical/physical backup dan WAL untuk PITR.
  • Terapkan retensi dan 3-2-1 rule.
  • Enkripsi backup dan uji restore secara berkala.

Selanjutnya

On this page