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:
| Fitur | pg_dump | Databasus |
|---|---|---|
| Mesin backup | pg_dump | Dibangun di atas pg_dump |
| Pengelolaan backup | ❌ Tidak | ✅ Ya |
| Dukungan database lain | Hanya PostgreSQL | PostgreSQL, MySQL, MariaDB, MongoDB |
| Antarmuka | Command-line | Antarmuka web + API |
| Penjadwalan | Manual atau script cron | ✅ Penjadwal bawaan |
| Tujuan penyimpanan | Filesystem lokal | Lokal, S3, R2, Azure, NAS, FTP |
| Kompresi | gzip, LZ4, zstd (manual) | zstd (otomatis, dioptimalkan) |
| Enkripsi | Memerlukan alat eksternal | ✅ AES-256-GCM bawaan |
| Notifikasi | ❌ Tidak ada | ✅ Slack, Teams, Telegram, Email, Webhooks |
| Fitur tim | ❌ Tidak ada | ✅ Ruang kerja, RBAC, log audit |
| Kebijakan retensi | Script 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 melaluipg_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!"}'
fiScript 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
- 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.
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.
Proses restore
Kedua alat mendukung restore backup, tetapi dengan alur kerja berbeda.
Restore backup pg_dump
Restore backup pg_dump memerlukan:
- Menemukan file backup
- Mendekripsi jika terenkripsi
- Mendekompresi jika terkompresi
- Menjalankan
pg_restoreataupsqldengan 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_restoreyang 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.
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.