Skip to main content

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:

  1. Mencegah Kehilangan Data – Data dapat dipulihkan kapan saja.
  2. Mempercepat Pemulihan Sistem – Setelah terjadi kegagalan sistem, restore memungkinkan sistem kembali berjalan cepat.
  3. Menjamin Integritas Data – Memastikan data yang digunakan tetap valid dan utuh.
  4. Mendukung Pemeliharaan Aplikasi – Backup rutin membantu rollback saat update atau migrasi gagal.
  5. Keamanan Operasional – Menjadi bagian penting dalam kebijakan disaster recovery (pemulihan bencana).

Backup dan Rollback Service Aplikasi menggunakan Registry Harbor

Backup Service Aplikasi

  1. Login:
docker login harbor.example.com
Username: admin
Password: Admin12345
  1. Tagging Images:
docker tag nginx:latest harbor.example.com/library/nginx:latest
  1. Push Images ke Registry Harbor:
docker push harbor.example.com/library/nginx:latest

Rollback Service Aplikasi

  1. 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
  2. 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
  3. Jika pakai Kubernetes / OKD:

    Edit file deployment YAML:

    spec:
    containers:
    - name: backend
    image: harbor.example.com/myapp/backend:v1.1.0

    Lalu 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 backup
  • namadb → 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.