Backup dan Restore
Pengertian Backup
Backup adalah proses membuat salinan data atau sistem agar dapat digunakan kembali ketika data asli hilang, rusak, atau terhapus.
Biasanya backup dilakukan secara berkala untuk memastikan keamanan data dari risiko kehilangan akibat:
- Kerusakan perangkat keras (hardware failure)
- Kesalahan pengguna (human error)
- Serangan malware atau ransomware
- Bencana alam (banjir, kebakaran, dll)
Backup bisa dilakukan dalam berbagai bentuk:
- Full Backup: Menyalin seluruh data.
- Incremental Backup: Hanya menyalin data yang berubah sejak backup terakhir.
- Differential Backup: Menyalin data yang berubah sejak full backup terakhir.
Pengertian Restore
Restore adalah proses mengembalikan data yang sudah dibackup ke kondisi semula.
Proses ini dilakukan ketika terjadi kehilangan data atau kerusakan sistem agar sistem dapat berjalan kembali seperti sebelum terjadi gangguan.
Contoh penggunaan restore:
- Mengembalikan file penting yang terhapus.
- Mengembalikan konfigurasi server ke versi sebelumnya.
- Memulihkan sistem aplikasi setelah crash.
Fungsi Backup dan Restore
Fungsi utama dari backup dan restore adalah menjaga kontinuitas dan keamanan data.
Beberapa manfaat pentingnya antara lain:
- Mencegah Kehilangan Data – Data dapat dipulihkan kapan saja.
- Mempercepat Pemulihan Sistem – Setelah terjadi kegagalan sistem, restore memungkinkan sistem kembali berjalan cepat.
- Menjamin Integritas Data – Memastikan data yang digunakan tetap valid dan utuh.
- Mendukung Pemeliharaan Aplikasi – Backup rutin membantu rollback saat update atau migrasi gagal.
- Keamanan Operasional – Menjadi bagian penting dalam kebijakan disaster recovery (pemulihan bencana).
Backup dan Rollback Service Aplikasi menggunakan Registry Harbor
Backup Service Aplikasi
- Login:
docker login harbor.example.com
Username: admin
Password: Admin12345
- Tagging Images:
docker tag nginx:latest harbor.example.com/library/nginx:latest
- Push Images ke Registry Harbor:
docker push harbor.example.com/library/nginx:latest
Rollback Service Aplikasi
-
Pull image lama dari Harbor:
Di server (atau cluster) tempat aplikasi jalan, login ke Harbor dan pull image versi lama itu.
docker login harbor.example.com
docker pull harbor.example.com/myapp/backend:v1.1.0 -
Deploy ulang service pakai image lama.
Edit docker-compose.yml bagian service:
services:
backend:
image: harbor.example.com/myapp/backend:v1.1.0
ports:
- "8080:8080"Lalu jalankan:
docker-compose pull backend
docker-compose up -d backend -
Jika pakai Kubernetes / OKD:
Edit file deployment YAML:
spec:
containers:
- name: backend
image: harbor.example.com/myapp/backend:v1.1.0Lalu apply ulang:
kubectl apply -f deployment-backend.yaml
kubectl get pods -o wide
kubectl describe pod <nama-pod> | grep Image
Backup & Restore PostgreSQL
1. Backup PostgreSQL
A. Server Langsung
Gunakan perintah berikut untuk membuat backup:
pg_dump -U postgres -F c -b -v -f /path/backup/namadb_$(date +%F).dump namadb
Penjelasan:
-U postgres→ nama user database-F c→ format “custom” (direkomendasikan untuk restore cepat)-b→ sertakan large objects (BLOB)-v→ tampilkan log detail (verbose)-f→ lokasi file output hasil backupnamadb→ nama database yang ingin dibackup
Contoh hasil file:
/path/backup/namadb_2025-11-06.dump
B. Docker/Podman
Misal container PostgreSQL bernama pgdb:
docker exec pgdb pg_dump -U postgres -F c -b -v -f /tmp/backup.dump namadb
docker cp pgdb:/tmp/backup.dump .
2. Restore PostgreSQL
A. Server Langsung Pastikan database target sudah ada atau buat baru:
createdb -U postgres namadb
Kemudian restore:
pg_restore -U postgres -d namadb -v /path/backup/namadb_2025-11-06.dump
B. Docker/Podman
Restore Semua
docker cp backup.dump pgdb:/tmp/backup.dump
docker exec -it pgdb pg_restore -U postgres -d namadb -v backup.dump
Restore Hanya Schema Only
docker exec -it pgdb pg_restore -U postgres -d mydb -v --schema-only backup.dump // all schema
docker exec -it pgdb pg_restore -U postgres -d mydb -v --schema=public --schema-only backup.dump // spesifik schema
Restore Hanya Data Only
docker exec -it pgdb pg_restore -U postgres -d mydb -v --data-only backup.dump
docker exec -it pgdb pg_restore -U postgres -d mydb -v --data-only --schema=public backup.dump
Restore Table Tertentu Saja
docker exec -it pgdb pg_restore -U postgres -d mydb -v -t nama_tabel backup.dump
Restore Role & Privilege
docker exec -it pgdb pg_restore -U postgres --roles-only -v backup.dump
docker exec -it pgdb pg_restore -U postgres --no-owner -v backup.dump
3. Otomatisasi Backup Harian
Gunakan cron job di host:
0 2 * * * pg_dump -U postgres -F c -b -f /var/backups/namadb_$(date +\%F).dump namadb
Menjalankan backup otomatis setiap pukul 02:00 dini hari.
Contoh Lengkap Otomatisasi (Script Backup Harian)
#!/bin/bash
# File: /usr/local/bin/pg_backup.sh
DATE=$(date +%F)
DB_NAME="namadb"
BACKUP_DIR="/var/backups/postgres"
FILE="$BACKUP_DIR/${DB_NAME}_${DATE}.dump"
mkdir -p $BACKUP_DIR
pg_dump -U postgres -F c -b -v -f "$FILE" "$DB_NAME"
echo "Backup selesai: $FILE"
Tambahkan ke cron:
0 2 * * * /usr/local/bin/pg_backup.sh >> /var/log/pg_backup.log 2>&1
Selesai! Kamu sekarang sudah bisa melakukan backup dan restore PostgreSQL secara manual maupun otomatis.