Cara Migrasi Database ke Serverless PostgreSQL (Neon) di Helipod
Artikel ini ditulis dalam bahasa Indonesia.
Punya database PostgreSQL di VPS atau managed service lama dan ingin pindah ke serverless PostgreSQL? Artikel ini panduan lengkapnya, dari persiapan, migrasi, sampai optimasi production.
Kenapa harus migrasi ke serverless?
- Bayar sesuai pemakaian: Database idle = ga bayar
- Auto-scaling: Ga perlu lagi manually upgrade server
- Branching instan: Database branching dalam milidetik
- Maintenance gratis: Ga perlu lagi update PostgreSQL manual
Persiapan Sebelum Migrasi#
1. Audit Database Kamu#
Sebelum migrasi, pastikan:
# Cek versi PostgreSQL yang dipakai
SELECT version();
# Cek extensions yang aktif
SELECT * FROM pg_extension;
# Cek ukuran database
SELECT pg_database_size(current_database());
Yang perlu diperhatikan:
- Neon support PostgreSQL 15+: kalau masih pakai versi lama, upgrade dulu
- Cek extension compatibility: beberapa extension mungkin ga support di serverless
- Hitung ukuran data: Neon free tier punya limit 512MB
2. Backup Database#
Jangan pernah migrasi tanpa backup!
# Backup lokal
pg_dump -h localhost -U username -d dbname -Fc -o backup.dump
# Atau backup ke file
pg_dump -h localhost -U username -d dbname > backup.sql
3. Siapkan Connection Pooling#
Serverless PostgreSQL punya connection limit. Kamu butuh connection pooling:
# Di Helipod, gunakan connection string dengan pooler
DATABASE_URL=postgresql://user:pass@host:5432/dbname?pgbouncer=true
Tips:
- Gunakan PgBouncer atau built-in pooler dari Neon
- Set
pool_sizedi ORM kamu (Prisma, Sequelize, dll) - Implementasi connection timeout dan retry logic
Langkah Migrasi ke Neon + Helipod#
Langkah 1: Buat Neon Project#
- Login ke Neon Console
- Klik Create Project
- Pilih region yang paling dekat dengan server kamu
- Catat connection string yang diberikan
Langkah 2: Connect Neon ke Helipod#
- Buka Settings → Integrations di Helipod
- Connect akun Neon kamu
- Pilih project yang baru dibuat
Langkah 3: Migrate Data#
Opsi A: pg_dump/pg_restore (Recommended)
# Export dari database lama
pg_dump -h old-host -U user -d dbname > migration.sql
# Import ke Neon
psql "postgresql://user:pass@ep-xxx.region.neon.tech/dbname" < migration.sql
Opsi B: Logical Replication (Zero-Downtime)
-- Di database lama
CREATE PUBLICATION my Publication FOR ALL TABLES;
-- Di Neon (via Helipod terminal)
CREATE SUBSCRIPTION my_subscription
CONNECTION 'postgresql://user:pass@old-host/dbname'
PUBLICATION my_publication;
Langkah 4: Update Application#
Update connection string di aplikasi kamu:
# Lama
DATABASE_URL=postgresql://user:pass@old-host:5432/dbname
# Baru (via Helipod)
DATABASE_URL=postgresql://user:pass@ep-xxx.region.neon.tech/dbname
Langkah 5: Test dan Deploy#
- Test semua fitur aplikasi
- Jalankan load test
- Monitor query performance
- Deploy ke production
Optimasi Setelah Migrasi#
Connection Pooling#
# Prisma example
DATABASE_URL="postgresql://user:pass@host/dbname?connection_limit=20&pool_timeout=20"
# Sequelize example
dialectOptions: {
pool: {
max: 20,
min: 5,
acquire: 30000,
idle: 10000
}
}
Query Optimization#
-- Cek slow queries
SELECT query, mean_exec_time, calls
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 10;
-- Tambah index untuk query yang sering dipakai
CREATE INDEX CONCURRENTLY idx_users_email ON users(email);
Monitoring#
# Helipod metrics
- Connection count
- Query latency
- Storage usage
- Branch count
Troubleshooting#
Masalah: Connection Timeout#
# Solusi: Tambahkan timeout di connection string
DATABASE_URL="postgresql://...?connect_timeout=10&statement_timeout=30000"
Masalah: Cold Start Lambda#
# Solusi: Gunakan connection pooling
# Neon punya built-in pooler di port 5432
DATABASE_URL="postgresql://...@ep-xxx-pooler.region.neon.tech/dbname"
Masalah: Extension Tidak Support#
# Cek extension yang support di Neon
SELECT * FROM pg_available_extensions
WHERE name IN ('pg_trgm', 'uuid-ossp', 'pgcrypto');
Checklist Migrasi#
- Backup database lama
- Buat Neon project
- Connect Neon ke Helipod
- Migrate data (pg_dump atau replication)
- Update connection string
- Test semua fitur
- Load test
- Monitor performance
- Deploy ke production
Kesimpulan#
Migrasi ke serverless PostgreSQL di Helipod bukan hal yang rumit. Dengan persiapan yang tepat dan mengikuti langkah-langkah di atas, kamu bisa pindah ke Neon tanpa downtime dan tanpa ribet.
Yang kamu dapatkan:
- ✅ Database auto-scaling
- ✅ Branching instan
- ✅ Bayar sesuai pemakaian
- ✅ Zero maintenance
Butuh bantuan migrasi? Hubungi support@helipod.io, tim kami siap membantu.
Baca juga: Integrasi Neon Database di Helipod