PostgreSQL Sunucu Kurulumu, Güvenlik ve Performans Rehberi

PostgreSQL Sunucu Kurulumu, Güvenlik ve Performans Rehberi - Corelux
20 Haz 2026
Paylaş:

PostgreSQL Sunucu Kurulumu, Güvenlik ve Performans Rehberi

Son Güncelleme: Haziran 2026

PostgreSQL sunucu kurulumu, güvenilir veritabanı altyapısı oluşturmak isteyen işletmeler, yazılım ekipleri ve sistem yöneticileri için kritik bir konudur. Bu rehberde PostgreSQL güvenliği, performans ayarları, yedekleme mantığı, bağlantı yönetimi ve üretim ortamı için önerilen yapılandırmaları adım adım ele alacağız.

İçindekiler

PostgreSQL Nedir?

PostgreSQL, açık kaynaklı, ilişkisel veritabanı yönetim sistemi (Relational Database Management System) olarak kullanılan güçlü bir veritabanı sunucusudur. SQL standartlarına uyumluluğu, gelişmiş veri tipleri, işlem güvenliği ve genişletilebilir mimarisi sayesinde web uygulamaları, kurumsal yazılımlar, finans sistemleri, raporlama altyapıları ve mikroservis mimarilerinde sıkça tercih edilir.

PostgreSQL yalnızca klasik tablo ve satır yapısı sunmaz; aynı zamanda JSONB, tam metin arama (full-text search), gelişmiş indeksleme, prosedürel fonksiyonlar ve coğrafi veri desteği gibi modern özelliklerle de öne çıkar. Bu nedenle küçük bir blog sisteminden yüksek trafikli SaaS uygulamalarına kadar geniş bir kullanım alanına sahiptir.

PostgreSQL’in Öne Çıkan Avantajları

  • Açık kaynak: Lisans maliyeti olmadan güçlü bir veritabanı altyapısı kurmanıza olanak tanır.
  • ACID uyumluluğu: Veri bütünlüğünü koruyan güvenilir işlem (transaction) mantığı sunar.
  • Geniş veri tipi desteği: JSON, UUID, array, timestamp ve özel veri tipleriyle esnek yapı sağlar.
  • Güçlü indeksleme: B-tree, GIN, GiST ve BRIN gibi indeks türleriyle farklı sorgu ihtiyaçlarına yanıt verir.
  • Topluluk ve ekosistem: Geniş kullanıcı topluluğu, araçlar ve uzantılar sayesinde uzun vadeli sürdürülebilirlik sağlar.

PostgreSQL İçin Sunucu Hazırlığı

PostgreSQL kurulumu yapmadan önce kullanılacak sunucunun işlemci, bellek, disk ve ağ açısından doğru planlanması gerekir. Veritabanı sunucularında darboğaz genellikle disk girişi/çıkışı (I/O), bellek yetersizliği veya yanlış bağlantı yönetiminden kaynaklanır. Bu nedenle kurulum öncesi kapasite planlaması yapmak, ileride yaşanabilecek performans sorunlarını azaltır.

Donanım ve Kaynak Önerileri

Kullanım Tipi CPU RAM Disk Öneri
Küçük web sitesi 2 vCPU 2-4 GB SSD veya NVMe Tek uygulama ve düşük sorgu trafiği için yeterlidir.
Orta ölçekli uygulama 4-8 vCPU 8-16 GB NVMe Cache, indeks ve bağlantı havuzu planlanmalıdır.
Yüksek trafikli servis 8+ vCPU 32 GB+ NVMe RAID Replikasyon, yedekleme ve izleme ayrı planlanmalıdır.

PostgreSQL için disk seçimi özellikle önemlidir. NVMe diskler, yüksek IOPS (Input/Output Operations Per Second - saniyedeki giriş/çıkış işlemi) değerleri sayesinde veritabanı sorgularında ciddi avantaj sağlar. Eğer veritabanı dosyaları, loglar ve yedekler aynı disk üzerinde tutuluyorsa yoğun yazma işlemlerinde performans düşebilir.

Sunucu Seçimi

Test ve geliştirme ortamları için Sanal Sunucu tercih edilebilir. Daha yüksek performans, fiziksel kaynak izolasyonu ve yoğun veritabanı trafiği gereken projelerde ise Kiralık Sunucu daha uygun olabilir. Türkiye lokasyonlu kullanıcı kitlesine hizmet veren uygulamalar için Türkiye VDS Sunucu veya Türkiye Kiralık Sunucu seçenekleri düşük gecikme süresi açısından avantaj sağlar.

PostgreSQL Kurulum Adımları

PostgreSQL kurulumu Linux dağıtımlarında paket yöneticisi üzerinden kolayca yapılabilir. Aşağıdaki örnekler Ubuntu ve Debian tabanlı sistemler için hazırlanmıştır. Kurulumdan önce sistem paketlerini güncellemek ve güvenlik yamalarını uygulamak önerilir.

Sistem Paketlerini Güncelleme

sudo apt update
sudo apt upgrade -y

PostgreSQL Kurulumu

sudo apt install postgresql postgresql-contrib -y

postgresql-contrib paketi, PostgreSQL ile birlikte kullanılan ek araçları ve uzantıları içerir. Kurulum tamamlandıktan sonra servis durumunu kontrol edebilirsiniz.

sudo systemctl status postgresql

Servisin sistem açılışında otomatik başlaması için aşağıdaki komut kullanılabilir:

sudo systemctl enable postgresql

PostgreSQL Komut Satırına Giriş

PostgreSQL varsayılan olarak postgres sistem kullanıcısı ile yönetilir. Yönetim konsoluna geçmek için şu komutu kullanabilirsiniz:

sudo -u postgres psql

Çıkış yapmak için \q komutu yeterlidir.

Temel PostgreSQL Yapılandırması

PostgreSQL’in ana yapılandırma dosyaları genellikle /etc/postgresql/ dizini altında sürüm numarasına göre konumlanır. En sık düzenlenen iki dosya postgresql.conf ve pg_hba.conf dosyalarıdır. Bu dosyalar, bağlantı adresleri, port, bellek kullanımı, kimlik doğrulama ve erişim kurallarını belirler.

Veritabanı ve Kullanıcı Oluşturma

Bir uygulama için ayrı kullanıcı ve ayrı veritabanı oluşturmak güvenlik açısından önemlidir. Her uygulamanın yalnızca ihtiyaç duyduğu veritabanına erişmesi, olası bir ihlal durumunda zararı sınırlar.

sudo -u postgres psql
CREATE USER app_user WITH PASSWORD 'GucluParolaKullanin';
CREATE DATABASE app_db OWNER app_user;
GRANT ALL PRIVILEGES ON DATABASE app_db TO app_user;

Parola belirlerken tahmin edilebilir ifadeler, firma adı, alan adı veya kısa kelimeler kullanılmamalıdır. Üretim ortamlarında parola yönetimi için gizli bilgi yönetimi (secret management) süreçleri tercih edilmelidir.

Dinleme Adresini Ayarlama

Varsayılan kurulumda PostgreSQL genellikle yalnızca yerel bağlantıları kabul eder. Uzak bağlantı gerekiyorsa postgresql.conf içinde listen_addresses değeri düzenlenir.

sudo nano /etc/postgresql/15/main/postgresql.conf
listen_addresses = 'localhost'

Eğer yalnızca belirli bir özel ağ IP adresinden bağlantı alınacaksa * yerine ilgili IP adresini yazmak daha güvenlidir. Örneğin uygulama sunucusu ile veritabanı sunucusu aynı özel ağdaysa yalnızca özel ağ arayüzünü dinlemek saldırı yüzeyini azaltır.

PostgreSQL Güvenlik Ayarları

PostgreSQL güvenliği, yalnızca güçlü parola kullanmaktan ibaret değildir. Ağ erişimi, kullanıcı yetkileri, şifreleme, loglama, yedek güvenliği ve güncelleme yönetimi birlikte ele alınmalıdır. Veritabanı, çoğu uygulamanın en kritik bileşeni olduğu için güvenlik katmanlı şekilde tasarlanmalıdır.

pg_hba.conf ile Erişim Kontrolü

pg_hba.conf dosyası, hangi IP adresinin hangi kullanıcıyla hangi veritabanına bağlanabileceğini belirler. Bu dosyada gereksiz geniş IP aralıkları tanımlamak risklidir.

sudo nano /etc/postgresql/15/main/pg_hba.conf

Örnek güvenli erişim kuralı:

host    app_db    app_user    10.10.10.20/32    scram-sha-256

Bu örnekte yalnızca 10.10.10.20 IP adresine sahip uygulama sunucusu, app_user kullanıcısıyla app_db veritabanına bağlanabilir. scram-sha-256, parola kimlik doğrulaması için daha güvenli bir yöntemdir.

Güvenlik Duvarı Kuralları

PostgreSQL varsayılan olarak 5432 portunu kullanır. Bu portu internete tamamen açmak yerine yalnızca uygulama sunucusunun IP adresine izin vermek gerekir.

sudo ufw allow from 10.10.10.20 to any port 5432 proto tcp
sudo ufw deny 5432/tcp
sudo ufw status

Yetki Prensibi

  • En az yetki: Uygulama kullanıcısına yalnızca ihtiyaç duyduğu veritabanı ve tablolar için izin verin.
  • Yönetici hesabı ayrımı: Günlük uygulama bağlantılarında süper kullanıcı hesabı kullanmayın.
  • Parola rotasyonu: Belirli aralıklarla parolaları değiştirin ve eski erişimleri kapatın.
  • Log takibi: Başarısız bağlantı denemelerini ve şüpheli sorguları düzenli izleyin.

SSL ile Şifreli Bağlantı

Uygulama sunucusu ile PostgreSQL farklı makinelerde çalışıyorsa bağlantıların SSL/TLS ile şifrelenmesi önerilir. Böylece ağ üzerinden geçen kullanıcı adı, parola ve sorgu içerikleri korunur. Sertifika yönetimi için kurumsal yapılarda özel sertifika otoritesi kullanılabilir; web servisleri için ayrıca SSL Sertifikası hizmetlerinden yararlanılabilir.

Performans Optimizasyonu

PostgreSQL performansı yalnızca sunucu kaynaklarına bağlı değildir. Sorgu tasarımı, indeks kullanımı, bellek ayarları, bağlantı sayısı, disk yapısı ve bakım görevleri birlikte değerlendirilmelidir. Yanlış yapılandırılmış güçlü bir sunucu, doğru ayarlanmış daha küçük bir sunucudan daha düşük performans verebilir.

Temel Performans Parametreleri

Parametre Açıklama Dikkat Edilmesi Gerekenler
shared_buffers PostgreSQL’in veri önbelleği için kullandığı bellek alanıdır. Genellikle toplam RAM’in belirli bir kısmı ayrılır; aşırı artırmak her zaman iyi değildir.
work_mem Sıralama ve hash işlemleri için bağlantı başına kullanılan bellek miktarıdır. Çok yüksek ayarlanırsa eş zamanlı bağlantılarda RAM tüketimi artabilir.
maintenance_work_mem VACUUM, indeks oluşturma ve bakım işlemleri için kullanılan bellektir. Bakım işlemleri yoğun sistemlerde dikkatli artırılmalıdır.
max_connections Aynı anda açılabilecek bağlantı sayısını belirler. Yüksek bağlantı sayısı yerine bağlantı havuzu kullanmak daha verimlidir.

Örnek Performans Ayarı

Aşağıdaki değerler yalnızca örnek niteliğindedir. Üretim ortamında uygulama trafiği, RAM miktarı, sorgu türleri ve eş zamanlı kullanıcı sayısı dikkate alınarak test yapılmalıdır.

shared_buffers = 2GB
work_mem = 16MB
maintenance_work_mem = 512MB
max_connections = 100
effective_cache_size = 6GB

İndeks Kullanımı

Sık sorgulanan sütunlarda indeks kullanmak sorgu süresini ciddi şekilde azaltabilir. Ancak her sütuna indeks eklemek doğru değildir; çünkü indeksler yazma işlemlerinde ek maliyet oluşturur. Özellikle WHERE, JOIN, ORDER BY ve GROUP BY kullanılan alanlar analiz edilmelidir.

CREATE INDEX idx_orders_user_id ON orders(user_id);

Sorgu planını incelemek için EXPLAIN ANALYZE komutu kullanılabilir:

EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = 42;

Bağlantı Havuzu Kullanımı

PostgreSQL’de çok sayıda doğrudan bağlantı açmak bellek tüketimini artırabilir. Yoğun trafikli uygulamalarda bağlantı havuzu (connection pooling) için PgBouncer gibi araçlar kullanılabilir. Bu yaklaşım, uygulamanın çok sayıda kısa süreli bağlantı açtığı senaryolarda kaynak kullanımını azaltır.

Yedekleme ve Geri Yükleme

Veritabanı yönetiminde en kritik başlıklardan biri yedekleme stratejisidir. Yedek alınmayan veya geri yükleme testi yapılmayan sistemlerde veri kaybı riski yüksektir. Yedekleme yalnızca dosyayı oluşturmak değil; saklamak, şifrelemek, doğrulamak ve düzenli olarak geri dönüş testi yapmak anlamına gelir.

pg_dump ile Mantıksal Yedek

Küçük ve orta ölçekli veritabanlarında pg_dump ile mantıksal yedek almak pratik bir yöntemdir.

pg_dump -U app_user -h localhost -F c -b -v -f app_db.backup app_db

Geri yükleme için pg_restore kullanılabilir:

pg_restore -U app_user -h localhost -d app_db -v app_db.backup

Otomatik Yedekleme Örneği

Aşağıdaki basit betik, günlük yedekleme için kullanılabilir. Üretim ortamlarında yedeklerin farklı bir sunucuya veya güvenli depolama alanına aktarılması önerilir.

#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR="/backup/postgresql"
DB_NAME="app_db"
mkdir -p $BACKUP_DIR
pg_dump -U app_user -F c -b -f $BACKUP_DIR/$DB_NAME-$DATE.backup $DB_NAME
find $BACKUP_DIR -type f -mtime +14 -delete

Yedeklerinizi merkezi ve güvenli bir yapıda saklamak için Yedekleme Hizmeti seçeneklerini değerlendirebilirsiniz. Özellikle e-ticaret, finans, CRM ve ERP sistemlerinde yedeklerin farklı lokasyonda tutulması iş sürekliliği açısından önemlidir.

İzleme ve Bakım Önerileri

PostgreSQL sunucusunun sağlıklı çalışması için düzenli izleme ve bakım yapılmalıdır. CPU, RAM, disk kullanımı, bağlantı sayısı, yavaş sorgular, kilitlenmeler ve disk doluluk oranı takip edilmelidir. İzleme yapılmayan sistemlerde performans sorunları genellikle kullanıcı şikayetleriyle fark edilir.

Yavaş Sorguları İzleme

postgresql.conf içinde yavaş sorguları loglamak için şu ayarlar kullanılabilir:

log_min_duration_statement = 1000
log_connections = on
log_disconnections = on

Bu örnekte 1000 milisaniyeden uzun süren sorgular loglanır. Böylece indeks ihtiyacı olan, hatalı yazılmış veya gereksiz büyük veri döndüren sorgular tespit edilebilir.

VACUUM ve ANALYZE

PostgreSQL’de silinen veya güncellenen satırlar fiziksel olarak hemen temizlenmez. VACUUM işlemi, gereksiz alanları temizlemeye yardımcı olur. ANALYZE ise sorgu planlayıcısının daha doğru karar vermesi için tablo istatistiklerini günceller.

VACUUM ANALYZE;

Çoğu sistemde autovacuum varsayılan olarak aktiftir; ancak yoğun yazma yapılan veritabanlarında ayarların kontrol edilmesi gerekir.

Disk Doluluğu Kontrolü

df -h
du -sh /var/lib/postgresql/

Diskin tamamen dolması, PostgreSQL’in yazma işlemlerini durdurmasına ve servis kesintisine yol açabilir. Bu nedenle disk kullanım oranı için alarm mekanizması kurulmalıdır.

Pratik Kullanım Senaryoları

PostgreSQL farklı mimarilerde farklı şekillerde konumlandırılabilir. Doğru mimari seçimi, uygulamanın trafiğine, veri büyüklüğüne ve güvenlik gereksinimlerine bağlıdır.

Senaryo 1: Tek Sunucuda Web Uygulaması ve PostgreSQL

Küçük projelerde web uygulaması ve PostgreSQL aynı sunucuda çalışabilir. Bu yapı yönetim açısından kolaydır fakat kaynak paylaşımı nedeniyle trafik arttıkça darboğaz oluşabilir. Linux Hosting veya küçük ölçekli sanal sunucu çözümleri başlangıç için yeterli olabilir.

Senaryo 2: Uygulama ve Veritabanı Ayrı Sunucularda

Orta ve büyük ölçekli projelerde uygulama sunucusu ile veritabanı sunucusunu ayırmak daha sağlıklıdır. Böylece veritabanı için ayrılmış CPU, RAM ve disk kaynakları daha verimli kullanılır. Bu yapıda PostgreSQL portu yalnızca uygulama sunucusuna açılmalı, genel internete kapalı tutulmalıdır.

Senaryo 3: Yüksek Trafikli SaaS Altyapısı

SaaS uygulamalarında bağlantı havuzu, read replica (okuma kopyası), düzenli yedekleme ve sorgu izleme birlikte planlanmalıdır. Veritabanı büyüdükçe tablo bölümleme (partitioning), arşivleme ve indeks stratejileri önem kazanır. Bu tür yapılarda Bulut Sunucu veya kaynakları ayrılmış kiralık sunucu mimarileri daha esnek bir altyapı sunabilir.

Senaryo 4: Avrupa Lokasyonlu Uygulamalar

Kullanıcı kitlesi Avrupa’da bulunan uygulamalarda veritabanı ve uygulama sunucusunun aynı bölgeye yakın konumlandırılması gecikme süresini azaltabilir. Bu tür projeler için Almanya VDS Sunucu veya Fransa VDS Sunucu seçenekleri değerlendirilebilir.

Sıkça Sorulan Sorular

PostgreSQL üretim ortamında güvenli midir?

Evet. PostgreSQL doğru yapılandırıldığında üretim ortamları için güvenli ve kararlı bir veritabanı sunucusudur. Ancak pg_hba.conf erişim kuralları, güçlü kimlik doğrulama, güvenlik duvarı, düzenli güncelleme ve yedekleme süreçleri mutlaka uygulanmalıdır.

PostgreSQL için ne kadar RAM gerekir?

Bu değer uygulamanın sorgu yoğunluğuna, veri boyutuna ve eş zamanlı bağlantı sayısına göre değişir. Küçük uygulamalar için 2-4 GB RAM yeterli olabilirken, orta ve büyük ölçekli sistemlerde 8 GB, 16 GB veya daha fazla RAM gerekebilir.

PostgreSQL portu internete açılmalı mı?

Genel olarak hayır. PostgreSQL’in 5432 portu yalnızca ihtiyaç duyan uygulama sunucularına açılmalıdır. Genel internete açık veritabanı portları brute force (kaba kuvvet) saldırıları ve yetkisiz erişim riskini artırır.

pg_dump yedeği yeterli midir?

Küçük ve orta ölçekli sistemlerde pg_dump pratik bir yedekleme yöntemidir. Ancak büyük veritabanlarında fiziksel yedekleme, WAL arşivleme ve noktasal geri dönüş (point-in-time recovery) gibi daha gelişmiş stratejiler gerekebilir.

PostgreSQL performansı nasıl artırılır?

Performans için doğru indeksleme, sorgu optimizasyonu, yeterli RAM, hızlı disk, bağlantı havuzu, düzenli VACUUM ANALYZE işlemleri ve yavaş sorgu loglarının incelenmesi gerekir. Tek bir ayar tüm performans sorunlarını çözmez; bütüncül analiz yapılmalıdır.

PostgreSQL ile MySQL arasında hangisi seçilmeli?

Seçim uygulamanın ihtiyaçlarına bağlıdır. Gelişmiş veri tipleri, karmaşık sorgular, JSONB ve güçlü işlem bütünlüğü gereken projelerde PostgreSQL avantajlıdır. Daha basit web uygulamalarında farklı veritabanları da yeterli olabilir.

Sonuç

PostgreSQL sunucu kurulumu, yalnızca paketi yüklemekten ibaret değildir; doğru sunucu seçimi, güvenli erişim kuralları, performans ayarları, yedekleme planı ve düzenli izleme süreçleri birlikte düşünülmelidir. Üretim ortamlarında veritabanı altyapısının kararlı çalışması, uygulama performansı ve iş sürekliliği açısından doğrudan önem taşır.

PostgreSQL altyapınızı güvenli, hızlı ve ölçeklenebilir şekilde konumlandırmak için Corelux’un Sanal Sunucu, Kiralık Sunucu, Bulut Sunucu ve Yedekleme Hizmeti çözümlerini değerlendirebilirsiniz. Doğru altyapı üzerinde yapılandırılmış bir PostgreSQL sunucusu, hem bugünkü uygulama ihtiyaçlarını karşılar hem de gelecekteki büyüme hedefleri için sağlam bir temel oluşturur.

Yazar

Boran BAR

Chat on WhatsApp