PostgreSQL Otomatik Kurulum: Connection Pool ve Yedekleme Rehberi
VDS Panel ile PostgreSQL veritabanı oluşturma, PgBouncer connection pool kurulumu, otomatik yedekleme ve restore süreçleri. Manuel psql komutlarına veda.
PostgreSQL, açık kaynak veritabanı dünyasının kral tacı. Güvenilir, ölçeklenebilir, standartlara bağlı. Ancak production’da verimli kurulum, connection pool ayarı, yedekleme ve restore süreci bilgi ister. Tek bir apt install postgresql komutundan çok daha fazlası.
Bu yazıda VDS Panel’in PostgreSQL’i nasıl otomatik yönettiğini, PgBouncer ile nasıl ölçeklediğini ve yedekleme stratejisini anlatacağız.
Yeni proje = yeni veritabanı
Geleneksel akışta PostgreSQL yapılandırması:
-- psql ile root olarak
CREATE USER myapp_user WITH PASSWORD 'güçlü_parola';
CREATE DATABASE myapp_production OWNER myapp_user;
GRANT ALL PRIVILEGES ON DATABASE myapp_production TO myapp_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO myapp_user;
Sonra uygulamanızın env’ine:
DATABASE_URL=postgres://myapp_user:güçlü_parola@localhost:5432/myapp_production
VDS Panel’de: Projeyi eklerken “PostgreSQL ekle” kutusunu işaretleyin. Gerisi otomatik:
- 01Kullanıcı oluşturulurmyapp_user adında user, 32 karakter güçlü parolayla. Parola DB dışında tekrar gösterilmez.
- 02Veritabanı oluşturulurmyapp_production adında DB, owner olarak yeni user atanır.
- 03Public schema izinleri verilirPG 15+ için DEFAULT PRIVILEGES de set edilir. Liquibase/Flyway migration'ları sorunsuz çalışır.
- 04DATABASE_URL env'e enjekte edilirUygulama container'ı başlarken connection string'i process environment'ında görür. Dosyada veya git'te hiçbir yere yazılmaz.
- 05PgBouncer connection pool kaydedilirHigh-throughput proje ise PgBouncer üzerinden bağlantı yönlendirilir. Aşağıda detay.
PgBouncer neden gerekli?
PostgreSQL her bağlantı için ayrı bir process forklar. Bir Node.js API 100 eşzamanlı istek alıyorsa 100 PG process olur. Bu memory ve context switch yükü yaratır.
PgBouncer, bağlantıları havuzlar. 1000 uygulama bağlantısını 20-50 gerçek PG bağlantısına eşler. Sonuç:
VDS Panel yüksek trafikli projeler için otomatik PgBouncer kurar. Bağlantı URL’i:
postgres://myapp_user:pass@pgbouncer:6432/myapp_production?pool_mode=transaction
Uygulama farkında bile değil; aynı arayüzle kullanıyor ama arkada connection pool çalışıyor.
PgBouncer’ın transaction pool mode’u prepared statement ve session değişkenlerini desteklemez. Uygulamanız SET ... veya PREPARE ... kullanıyorsa session mode’u kullanın (biraz daha düşük throughput ama tam uyumluluk).
Otomatik yedekleme
VDS Panel veritabanınızı 15 dakikada bir kontrol eder ve günlük tam yedek alır:
- pg_dump —format=custom ile veritabanı dump’ı
- age veya gpg ile şifreleme (public key ile)
- Opsiyonel S3 veya R2 upload (disaster recovery)
- 30 gün retention, eski yedekler otomatik temizlenir
- Başarısız upload’da yerel dosya korunur
Panel’den yedek listesine bakabilir, herhangi bir yedeği restore edebilirsiniz.
age public key’i panele yüklersiniz. Private key sadece sizde kalır. Panel veya saldırgan bile yedekleri decrypt edemez. Anahtarı mutlaka offline yedekleyin; kaybederseniz yedeklerinize erişiminizi kaybedersiniz.
Restore: geriye dönüş
Bir migration yanlış gitti, veri bozuldu. Panelden:
- “Veritabanı” → “Yedekler” sekmesi
- İstediğiniz yedek tarihini seçin
- “Restore” butonu
- Panel:
- Mevcut bağlantıları kapatır (maintenance mode)
- Mevcut veriyi
.bakolarak saklar - Yedekten yeni veritabanı oluşturur
- Uygulamayı yeni DB’ye yönlendirir
- Bağlantıları açar
Toplam süre ~30 saniye (küçük DB’ler için). Büyük DB’ler için birkaç dakika.
Migration yönetimi
Liquibase, Flyway, Prisma, Drizzle, TypeORM, hangi migration tool’unu kullanırsanız kullanın, panel Liquibase/Flyway tablo ownership sorunlarını otomatik çözer:
- Liquibase/Flyway postgres superuser ile tablo yaratır
- Uygulama user’ı bu tablolara erişemez (ownership sorunu)
- Panel bunu algılar, ownership’i otomatik transfer eder
Aksi halde “permission denied for table …” hatası alırsınız; panel bu yaygın sorunu çözer.
Kubernetes üzerinde PostgreSQL (CNPG)
K3s modülü aktifse, production-grade PostgreSQL için CNPG (CloudNativePG operator) kullanılabilir. Artıları:
- Otomatik failover (primary çökerse standby devralır)
- Streaming replication (read replica’lar)
- Hot backup (downtime’sız yedek)
- Monitoring entegrasyonu
- Scheduled maintenance
VDS Panel K3s modülü ile bir tıkla CNPG kurar. High-availability isteyen production senaryoları için idealdir.
Monitoring
Her PostgreSQL instance için panel:
- Canlı bağlantı sayısı (kullanılan / max)
- Query performance (yavaş sorgu tespiti)
- Disk kullanımı
- Table size’ları
- Replication lag (varsa)
- Backup durumu
log_min_duration_statement = 500 varsayılan; 500ms’den uzun sorgular log’a düşer. Yavaş query’leri hemen fark edersiniz.
İzolasyon
Panel tarafında her proje kendi veritabanında çalışır:
- A projesi B projesinin DB’sine erişemez
- Ayrı user, ayrı parola, ayrı schema
- Yedekler ayrı dosyalarda, farklı anahtarlarla şifrelenebilir
- Silme işlemi sadece o projenin DB’sini etkiler
Multi-tenant hosting senaryoları için bu izolasyon kritik.
Sonuç
PostgreSQL production’ı, manuel yapılırsa saatlerce süren bir iştir: user/DB oluşturma, izin atama, connection pool kurma, yedekleme scheduling’i, restore testi, monitoring. VDS Panel bu adımları otomatik halleder ve panel arayüzünden yönetmenize izin verir.
İlk projenizi eklerken “PostgreSQL ekle” kutusunu işaretlemek yeterli. Gerisi 4 saniye içinde tamamlanır. Veritabanı modülü detayları için ana sayfaya bakabilir veya iletişim formundan kurulum senaryonuzu paylaşabilirsiniz.
Bunlar da hoşuna gidebilir
PostgreSQL, MySQL, MongoDB Karşılaştırması: Hangi Veritabanı Hangi Proje İçin?
Açık kaynak veritabanları karşılaştırması. PostgreSQL, MySQL, MariaDB, MongoDB ve Redis'in güçlü yönleri, performansı, use-case'leri. Proje tipinize göre seçim rehberi.
Okumaya başlaVPS Yedekleme Stratejisi ve Disaster Recovery: 3-2-1 Kuralı
Sunucunuzu felaket senaryolarında nasıl korursunuz? Otomatik şifreli yedekleme, 3-2-1 yedekleme kuralı, test ve restore süreçleri, RTO ve RPO hedefleri.
Okumaya başlaKendi sunucunuzda denemek ister misiniz?
İletişim formundan ulaşın, kullanım senaryonuza uygun lisans + kurulum planını birlikte hazırlayalım.