Alternatif pg_dump

Untuk backup logis, Databasus dibangun di atas pg_dump. Alih-alih menggantikan pg_dump, Databasus melengkapinya dengan pengelolaan backup, antarmuka web, penjadwalan otomatis, integrasi penyimpanan cloud, notifikasi, fitur kolaborasi tim, dan enkripsi bawaan. Selain backup logis, Databasus juga mendukung backup fisik, backup inkremental dengan pengarsipan WAL, dan Point-in-Time Recovery.

Perbandingan singkat

Berikut ringkasan kemampuan yang ditambahkan Databasus pada fungsi inti pg_dump:

Fiturpg_dumpDatabasus
Mesin backuppg_dumpDibangun di atas pg_dump
Pengelolaan backup❌ Tidak✅ Ya
Dukungan database lainHanya PostgreSQLPostgreSQL, MySQL, MariaDB, MongoDB
AntarmukaCommand-lineAntarmuka web + API
PenjadwalanManual atau script cron✅ Penjadwal bawaan
Tujuan penyimpananFilesystem lokalLokal, S3, R2, Azure, NAS, FTP
Kompresigzip, LZ4, zstd (manual)zstd (otomatis, dioptimalkan)
EnkripsiMemerlukan alat eksternal✅ AES-256-GCM bawaan
Notifikasi❌ Tidak ada✅ Slack, Teams, Telegram, Email, Webhooks
Fitur tim❌ Tidak ada✅ Ruang kerja, RBAC, log audit
Kebijakan retensiScript pembersihan manual✅ Retensi otomatis
Pemantauan ketersediaan❌ Tidak ada✅ Pemeriksaan ketersediaan bawaan
Backup fisik❌ Tidak✅ Ya
Backup inkremental❌ Tidak✅ Tingkat blok (PG 17+)
Point-in-Time Recovery❌ Tidak✅ Ya
Backup jarak jauh✅ Ya (CLI)✅ Ya

Apa itu pg_dump?

pg_dump adalah utilitas bawaan PostgreSQL untuk membuat backup logis. Alat ini sudah menjadi bagian dari PostgreSQL sejak awal dan merupakan alat standar untuk mengekspor database.

Keunggulan pg_dump

  • Backup portabel: Membuat dump SQL atau format custom yang dapat di-restore ke versi PostgreSQL berbeda.
  • Backup selektif: Dapat mengekspor tabel tertentu, skema, atau seluruh database.
  • Snapshot konsisten: Menggunakan MVCC PostgreSQL untuk membuat backup konsisten tanpa memblokir penulisan.
  • Dukungan luas: Tersedia di setiap instalasi PostgreSQL, terdokumentasi dengan baik, dan sudah teruji.
  • Format keluaran fleksibel: Format SQL biasa, custom, directory, atau tar.

Keterbatasan pg_dump

Meski pg_dump memiliki banyak kemampuan, penggunaannya di production biasanya memerlukan script tambahan:

  • Tanpa penjadwalan bawaan: Memerlukan cron job atau penjadwal eksternal.
  • Hanya penyimpanan lokal: Keluaran ditulis ke filesystem lokal; upload ke cloud memerlukan script tambahan.
  • Tanpa enkripsi: Secara default file backup tidak dienkripsi; perlu meneruskan keluaran melalui gpg atau alat serupa.
  • Tanpa notifikasi: Tidak dapat memberi peringatan backup berhasil atau gagal tanpa script khusus.
  • Tanpa pengelolaan retensi: Backup lama harus dibersihkan secara manual atau melalui script.
  • Hanya command-line: Tidak ada antarmuka visual untuk pemantauan atau pengelolaan.

Cara Databasus melengkapi pg_dump

Databasus menggunakan pg_dump sebagai mesin backup, mempertahankan semua manfaat backup logis sambil menambahkan fitur perusahaan.

Di balik layar: Saat kamu memulai backup di Databasus, aplikasi menjalankan pg_dump dengan parameter yang dioptimalkan, lalu menangani kompresi, enkripsi, dan upload ke tujuan penyimpanan yang dikonfigurasi.

Antarmuka web

Daripada mengingat opsi command-line pg_dump, Databasus menyediakan antarmuka web untuk:

  • Menambahkan database dengan panduan koneksi bertahap
  • Mengatur jadwal backup dengan kontrol visual
  • Memantau riwayat dan status backup sekilas
  • Mengunduh atau me-restore backup dengan satu klik
  • Melihat grafik kesehatan dan ketersediaan database

Kompresi yang dioptimalkan

Databasus menggunakan kompresi zstd (level 5) secara default, dengan hasil:

  • Ukuran 4-8x lebih kecil dibandingkan dump tanpa kompresi
  • Tambahan waktu proses ~20%, jauh lebih cepat daripada gzip
  • Penanganan otomatis, tidak perlu meneruskan keluaran melalui alat kompresi

Melampaui pg_dump: Backup fisik dan PITR

Databasus menggunakan pg_dump untuk backup logis, tetapi juga menawarkan kemampuan di luar jangkauan pg_dump:

  • Backup fisik: Salinan tingkat file dari seluruh cluster database melalui pg_basebackup. Backup dan restore lebih cepat untuk database besar.
  • Backup inkremental dan WAL: Backup inkremental tingkat blok melalui pg_basebackup --incremental (menggunakan ringkasan WAL dari server), ditambah streaming WAL berkelanjutan melalui pg_receivewal, memungkinkan Point-in-Time Recovery, yaitu restore ke detik mana pun di antara backup.
  • Pemulihan bencana: Dirancang untuk kebutuhan kehilangan data mendekati nol dengan backup dasar fisik dan streaming WAL berkelanjutan.

Backup ini menggunakan mekanisme backup bawaan PostgreSQL 17, jadi Databasus menggunakan kembali alat PostgreSQL yang sudah teruji alih-alih membuat ulang. Memerlukan PostgreSQL 17 atau lebih baru; pada versi lama hanya tersedia backup logis pg_dump. Semuanya berjalan dari jarak jauh dari host Databasus melalui protokol replikasi, sehingga tidak perlu instalasi di server database. Jaringan tertutup dijangkau melalui SSH tunnel ke host internal atau bastion, jadi database tidak perlu dibuka ke publik. Baca cara kerja backup fisik dan PITR.

Otomatisasi backup

Salah satu tantangan paling umum dengan pg_dump adalah menyiapkan backup otomatis yang andal.

Otomatisasi pg_dump konvensional

Script otomatisasi pg_dump umumnya seperti ini:

#!/bin/bash
# Backup script for pg_dump
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups"
DB_NAME="mydb"

# Create backup
pg_dump -Fc -h localhost -U postgres $DB_NAME > $BACKUP_DIR/$DB_NAME_$DATE.dump

# Compress (if not using custom format)
# gzip $BACKUP_DIR/$DB_NAME_$DATE.sql

# Encrypt
gpg --encrypt --recipient backup@company.com $BACKUP_DIR/$DB_NAME_$DATE.dump

# Upload to S3
aws s3 cp $BACKUP_DIR/$DB_NAME_$DATE.dump.gpg s3://my-bucket/backups/

# Cleanup old backups (keep last 7 days)
find $BACKUP_DIR -name "*.dump*" -mtime +7 -delete

# Send notification on failure
if [ $? -ne 0 ]; then
  curl -X POST https://hooks.slack.com/... -d '{"text":"Backup failed!"}'
fi

Script ini perlu dipelihara, diuji, dan dipantau. Setiap database memerlukan entri cron sendiri.

Otomatisasi Databasus

Di Databasus, fungsi yang sama sudah tersedia sebagai fitur bawaan:

  • Penjadwal visual: Atur backup per jam, harian, mingguan, bulanan, atau cron dengan waktu tertentu.
  • Kompresi otomatis: Kompresi zstd diterapkan secara otomatis.
  • Enkripsi bawaan: Enkripsi AES-256-GCM dengan kunci unik untuk setiap backup.
  • Upload ke cloud: Upload langsung ke S3, Cloudflare R2, Azure, atau tujuan lain.
  • Kebijakan retensi: Pembersihan otomatis backup lama berdasarkan pengaturan retensi.
  • Notifikasi: Peringatan ke Slack, Teams, Telegram, Email saat backup berhasil atau gagal.

Pilihan penyimpanan

pg_dump menulis ke filesystem lokal. Mengirim backup ke penyimpanan cloud memerlukan alat dan script tambahan.

Tujuan penyimpanan Databasus

Databasus langsung mendukung banyak tujuan penyimpanan:

  • Penyimpanan lokal
  • Amazon S3 dan layanan kompatibel S3
  • Cloudflare R2
  • Azure Blob Storage
  • NAS (Network-attached storage)
  • FTP

Setiap database dapat memiliki tujuan penyimpanan sendiri, dan beberapa tujuan dapat dikonfigurasi untuk redundansi.

Lihat semua pilihan penyimpanan →

Notifikasi

Mengetahui kapan backup berhasil atau gagal sangat penting untuk perlindungan data.

Notifikasi pg_dump

pg_dump tidak memiliki sistem notifikasi. Kamu perlu:

  • Menulis script pembungkus yang memeriksa exit code
  • Mengintegrasikan dengan alat pemantauan eksternal
  • Menyiapkan alur peringatan khusus

Notifikasi Databasus

Databasus menyediakan notifikasi bawaan ke:

  • Slack
  • Discord
  • Telegram
  • Microsoft Teams
  • Email
  • Webhooks (untuk integrasi khusus)

Tentukan kejadian yang memicu notifikasi: backup berhasil, backup gagal, atau keduanya.

Lihat semua kanal notifikasi →

Fitur tim

pg_dump adalah alat command-line untuk satu pengguna. Databasus menambahkan fitur kolaborasi untuk tim:

Kemampuan Databasus untuk tim

  • Ruang kerja: Atur database, kanal notifikasi, dan penyimpanan berdasarkan proyek atau tim. Pengguna hanya melihat ruang kerja tempat mereka diundang.
  • Kontrol akses berbasis peran: Tetapkan izin viewer, editor, atau admin untuk mengontrol tindakan setiap anggota tim.
  • Log audit: Lacak semua aktivitas dan perubahan sistem. Penting untuk kepatuhan keamanan dan pertanggungjawaban.
  • Notifikasi bersama: Kanal tim menerima pembaruan status backup secara otomatis.

Pelajari pengelolaan akses →

Keamanan

Keamanan adalah salah satu manfaat besar Databasus dibandingkan penggunaan pg_dump secara langsung.

Keamanan pg_dump

pg_dump membuat file backup tanpa enkripsi. Untuk mengamankannya, perlu:

  • Meneruskan keluaran melalui alat enkripsi (gpg, openssl)
  • Mengelola kunci enkripsi secara terpisah
  • Memastikan penyimpanan dan rotasi kunci yang aman
  • Mengatur izin file yang tepat

Keamanan Databasus

Databasus menerapkan keamanan pada beberapa tingkat:

  • Enkripsi AES-256-GCM: Semua password, token, dan kredensial dienkripsi. Kunci enkripsi disimpan terpisah dari database.
  • Enkripsi backup unik: Setiap file backup dienkripsi dengan kunci unik yang diturunkan dari master key, ID backup, dan salt acak.
  • Akses database read-only: Membatasi izin hanya pada SELECT, mencegah kerusakan data sekalipun sistem disusupi.

Pelajari keamanan Databasus →

Proses restore

Kedua alat mendukung restore backup, tetapi dengan alur kerja berbeda.

Restore backup pg_dump

Restore backup pg_dump memerlukan:

  1. Menemukan file backup
  2. Mendekripsi jika terenkripsi
  3. Mendekompresi jika terkompresi
  4. Menjalankan pg_restore atau psql dengan parameter yang benar

Restore backup Databasus

Databasus mempermudah restore:

  • Unduh satu klik: Unduh backup mana pun langsung dari antarmuka web.
  • Dekripsi otomatis: Backup didekripsi secara otomatis saat diunduh.
  • Perintah restore disediakan: Databasus menampilkan perintah pg_restore yang tepat untuk setiap backup.
  • Dukungan restore paralel: Gunakan beberapa core CPU untuk mempercepat restore database besar.

Instalasi

Instalasi pg_dump

pg_dump disertakan bersama PostgreSQL. Jika PostgreSQL sudah terpasang, pg_dump juga tersedia.

Instalasi Databasus

Databasus menawarkan beberapa metode instalasi:

  • Script satu baris: Memasang Docker (jika diperlukan), menyiapkan Databasus, dan mengatur startup otomatis.
  • Docker run: Satu perintah untuk menjalankan aplikasi dengan PostgreSQL bawaan.
  • Docker Compose: Untuk kontrol deployment yang lebih besar.

Lihat panduan instalasi →

Kesimpulan

pg_dump adalah utilitas backup PostgreSQL yang sudah teruji, dan Databasus dibangun langsung di atasnya. Pilihan antara menggunakan pg_dump langsung atau melalui Databasus bergantung pada kebutuhan kamu.

Gunakan pg_dump langsung jika:

  • Membutuhkan ekspor database sekali jalan atau sesuai kebutuhan
  • Terbiasa menulis dan memelihara shell script
  • Sudah memiliki infrastruktur otomatisasi (Ansible, Terraform, dan lainnya)
  • Hanya membutuhkan backup lokal tanpa penyimpanan cloud
  • Bekerja sebagai developer tunggal dengan kebutuhan sederhana

Gunakan Databasus jika:

  • Menginginkan backup otomatis terjadwal tanpa menulis script
  • Perlu menyimpan backup di penyimpanan cloud (S3, Azure Blob Storage, dan lainnya)
  • Menginginkan enkripsi bawaan tanpa mengelola kunci secara manual
  • Membutuhkan notifikasi saat backup berhasil atau gagal
  • Bekerja dalam tim dan membutuhkan fitur kolaborasi
  • Lebih suka antarmuka visual daripada alat command-line
  • Menginginkan kebijakan retensi dan pembersihan otomatis
  • Membutuhkan backup fisik, backup inkremental, atau Point-in-Time Recovery untuk pemulihan bencana

Databasus menggunakan pg_dump untuk backup logis dan melengkapinya dengan otomatisasi, keamanan, dan fitur tim. Selain itu, Databasus juga mendukung backup fisik, backup inkremental dengan pengarsipan WAL, dan Point-in-Time Recovery, kemampuan yang memang tidak dapat disediakan pg_dump.