Backup & Recovery — Database

Mengapa Backup Penting? Data adalah aset paling berharga. Tanpa backup, satu kesalahan bisa menghilangkan semua data. Backup bukan optional — ini wajib. Jenis B

Mengapa Backup Penting?

Data adalah aset paling berharga. Tanpa backup, satu kesalahan bisa menghilangkan semua data. Backup bukan optional — ini wajib.

Jenis Backup

1. Logical Backup (pg_dump)

Menghasilkan file SQL yang berisi perintah untuk merekonstruksi database.

# Full database backup
pg_dump -h localhost -U postgres mydb > backup.sql

# Hanya schema (tanpa data)
pg_dump --schema-only mydb > schema.sql

# Hanya data (tanpa schema)
pg_dump --data-only mydb > data.sql

# Format custom (compressed, lebih fleksibel)
pg_dump -Fc mydb > backup.dump

# Restore
psql mydb < backup.sql
pg_restore -d mydb backup.dump

2. Physical Backup (File System)

Copy file data PostgreSQL secara langsung. Lebih cepat untuk database besar.

# PostgreSQL base backup
pg_basebackup -D /backup/base -Ft -z -P

# Continuous archiving (WAL)
# postgresql.conf:
archive_mode = on
archive_command = 'cp %p /backup/wal/%f'

3. Point-in-Time Recovery (PITR)

Restore database ke titik waktu tertentu menggunakan WAL (Write-Ahead Logs).

# Restore ke waktu spesifik
# recovery.conf / postgresql.conf:
restore_command = 'cp /backup/wal/%f %p'
recovery_target_time = '2024-01-15 14:30:00'

Backup Strategy

# Cron: backup harian jam 2 pagi
0 2 * * * pg_dump -Fc mydb > /backup/daily/mydb_$(date +\%Y\%m\%d).dump

# Hapus backup lebih dari 7 hari
0 3 * * * find /backup/daily -name "*.dump" -mtime +7 -delete

Monitoring Backup

Yang akan kamu pelajari