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
| Istilah | Arti |
|---|---|
| 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
| Jenis | Cara | Kelebihan | Kekurangan |
|---|---|---|---|
| Logical | pg_dump | Fleksibel, portabel | Lambat untuk database besar |
| Physical | pg_basebackup | Cepat restore penuh | Terikat versi/arsitektur |
| WAL archiving | Continu WAL | PITR | Perlu storage dan konfigurasi |
| Snapshot storage | Snapshot volume | Cepat | Bergantung storage |
pg_dump
pg_dump -Fc -h 10.10.10.20 -U app -d app -f /backup/app-$(date +%F).dumpRestore:
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.dumpBackup 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 -PRestore 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.dumpAtau 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>&1Skrip 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 -deleteMenguji restore
Lakukan minimal bulanan:
- Siapkan database/VM percobaan.
- Restore backup terbaru.
- Jalankan query verifikasi.
- Bandingkan jumlah baris/data penting.
- Catat waktu restore (RTO aktual).
- Perbaiki prosedur jika gagal.
pg_restore -l backup.dump | head
pg_restore -d app_restore backup.dumpRecovery 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
Tingkatkan keandalan di Database Reliability & High Availability.