Operasional VPS8 menit baca
Mengelola Database PostgreSQL di VPS
Database adalah komponen yang paling sering kehabisan RAM lebih dulu. Konfigurasi default PostgreSQL dibuat untuk mesin kecil dan perlu disesuaikan agar sesuai paket VPS Anda.
Diperbarui
Instalasi
sudo apt -y install postgresql postgresql-contrib
sudo systemctl enable --now postgresql
sudo -u postgres psql -c "SELECT version();"Membuat database dan user aplikasi
sudo -u postgres psql <<'SQL'
CREATE USER app_user WITH PASSWORD 'ganti-dengan-password-kuat';
CREATE DATABASE app_db OWNER app_user;
REVOKE ALL ON SCHEMA public FROM PUBLIC;
GRANT ALL ON SCHEMA public TO app_user;
SQLJangan memakai superuser untuk aplikasi. Buat role terpisah dengan hak minimum.
Agar tidak terbuka ke internet
Secara default PostgreSQL hanya mendengarkan di localhost. Jangan ubah `listen_addresses` ke `*` kecuali Anda benar-benar paham risikonya. Untuk akses dari luar, gunakan SSH tunnel:
ssh -L 5432:127.0.0.1:5432 deploy@IP_SERVERTuning memori dasar
Aturan aman: sisakan RAM untuk sistem operasi dan aplikasi. Untuk VPS 4 GB, `shared_buffers` 1 GB dan `effective_cache_size` 3 GB sudah wajar.
shared_buffers = 1GB
effective_cache_size = 3GB
work_mem = 16MB
maintenance_work_mem = 256MB
max_connections = 100Ubah di /etc/postgresql/<versi>/main/postgresql.conf lalu restart. Ukur dengan pg_stat_statements, jangan menebak.
Backup harian dan uji restore
- Backup yang belum pernah di-restore bukan backup.
- Simpan salinan di luar server; disk VPS bisa hilang bersama datanya.
- Backup otomatis harian Hostflow adalah lapisan tambahan, bukan pengganti backup logis Anda.
# /etc/cron.daily/pg-backup
pg_dump -U app_user -Fc app_db > /var/backups/pg/app_db-$(date +%F).dump
find /var/backups/pg -name '*.dump' -mtime +14 -delete
# uji restore ke database sementara
createdb -U app_user restore_test
pg_restore -U app_user -d restore_test /var/backups/pg/app_db-2026-11-01.dump