Pendahuluan
PostgreSQL adalah database relasional open source yang digunakan oleh perusahaan kelas dunia: Instagram, Reddit, Shopify, hingga perusahaan fintech besar.
Banyak developer di Indonesia masih default ke MySQL karena lebih familiar. Padahal untuk aplikasi modern — terutama yang butuh JSON, full-text search, atau transaksi kompleks — PostgreSQL seringkali lebih unggul.
PostgreSQL vs MySQL: Kapan Pakai Yang Mana?
| Fitur | PostgreSQL | MySQL |
|---|---|---|
| JSON Native | ✅ Powerful JSONB | ⚠️ Terbatas |
| Full ACID | ✅ Sangat ketat | ✅ InnoDB |
| Ekosistem Laravel | ✅ Didukung penuh | ✅ Default |
| CTE & Window Function | ✅ Excellent | ⚠️ Dasar |
Install PostgreSQL di VPS Linux
Update sistem dan install dari repository resmi:
sudo apt update && sudo apt upgrade -y
sudo apt install postgresql postgresql-contrib -y
Cek status service:
sudo systemctl status postgresql
sudo systemctl enable postgresql
Cek versi terpasang:
psql --version
Setup User dan Database
Login sebagai user postgres (default superuser):
sudo -u postgres psql
Buat user dan database baru di dalam psql prompt:
-- Buat user baru dengan password
CREATE USER appuser WITH PASSWORD 'password_kuat_kamu';
-- Buat database
CREATE DATABASE appdb OWNER appuser;
-- Beri privileges
GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser;
-- Keluar
\q
Test login dengan user baru:
psql -U appuser -d appdb -h localhost
Konfigurasi Remote Access (Opsional)
Edit postgresql.conf:
sudo nano /etc/postgresql/*/main/postgresql.conf
# Ubah baris ini:
listen_addresses = 'localhost' # ubah ke '*' untuk semua interface
# atau lebih aman:
listen_addresses = 'localhost,IP_VPS_KAMU'
Edit pg_hba.conf untuk mengizinkan koneksi dari IP tertentu:
sudo nano /etc/postgresql/*/main/pg_hba.conf
# Tambahkan di bagian bawah:
host appdb appuser IP_CLIENT_KAMU/32 md5
Buka port di firewall dan restart:
sudo ufw allow from IP_CLIENT_KAMU to any port 5432
sudo systemctl restart postgresql
Optimasi Performa PostgreSQL
Edit postgresql.conf untuk tuning basic:
# Untuk VPS 2GB RAM:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 4MB
maintenance_work_mem = 128MB
wal_buffers = 16MB
checkpoint_completion_target = 0.9
max_connections = 100
Untuk kalkulasi otomatis sesuai spesifikasi VPS, gunakan tool PGTune.
Backup Otomatis dengan pg_dump
Backup manual database:
pg_dump -U appuser -d appdb > backup_$(date +%Y%m%d).sql
Otomatiskan dengan cron — backup harian jam 02:00:
crontab -e
# Tambahkan:
0 2 * * * pg_dump -U appuser -d appdb | gzip > /backup/appdb_$(date +\%Y\%m\%d).sql.gz
Kenapa VPS SufaNet Cocok untuk PostgreSQL?
- SSD NVMe — I/O database sangat cepat
- RAM dedicated tanpa overcommit
- Cocok untuk database 24/7
- Bandwidth besar untuk query remote
Database butuh storage yang cepat dan jujur
PostgreSQL performa terbaik di VPS dengan SSD NVMe dan RAM yang tidak di-share.
🚀 Lihat VPS Singapore SufaNetFAQ
Bisa migrasi dari MySQL ke PostgreSQL?
Bisa, menggunakan tool pgloader. Prosesnya tidak instan tapi cukup otomatis untuk banyak kasus.
Laravel bisa pakai PostgreSQL?
Ya, Laravel mendukung PostgreSQL secara native. Cukup ubah DB_CONNECTION=pgsql di file .env.
Kesimpulan
PostgreSQL bukan sekadar alternatif MySQL. Untuk aplikasi modern yang butuh query kompleks, JSON, atau concurrency tinggi, PostgreSQL adalah pilihan lebih baik.
Instalasi di VPS Linux mudah, konfigurasi straightforward, dan sudah siap production dengan beberapa tweak.