
PostgreSQL, **SQL ile çalışan, özgür ve açık kaynak bir nesne-ilişkisel veritabanı yönetim sistemidir**. Transaction, ilişkisel kısıtlar, MVCC, JSONB ve farklı indeks türleriyle uygulama verisini yönetir. [Resmi proje özeti](https://www.postgresql.org/about/) özellikleri; [PostgreSQL License](https://www.postgresql.org/about/licence/) ise kullanım ve dağıtım koşullarını açıklar.

Uzantılar; coğrafi veri, vektör arama veya başka özel iş yükleri için motorun yeteneklerini genişletebilir. Ancak her uzantının lisansı, desteklenen PostgreSQL sürümü ve yükseltme yolu ayrıdır. Çekirdeğin lisansı bütün ekosisteme otomatik uygulanmaz.

## PostgreSQL mi MySQL mi?

İki motor da ilişkisel uygulamalarda kullanılabilir. Seçim yalnız özellik sayısına veya genel bir hız sıralamasına dayanmamalıdır.

| Karar alanı    | Değerlendirme                                                                                  |
| -------------- | ---------------------------------------------------------------------------------------------- |
| Hazır uygulama | Uygulama üreticisinin desteklediği motor ve sürüm önceliklidir.                                |
| Veri modeli    | İlişkisel kısıtlar, JSON sorguları, özel veri türleri ve gerekli uzantılar karşılaştırılır.    |
| Mevcut SQL     | Fonksiyonlar, veri türleri, collation, transaction davranışı ve ORM sorguları pilotta sınanır. |
| Performans     | Aynı veri, indeks, donanım ve eşzamanlılıkla gerçek sorgular ölçülür.                          |
| İşletim        | Ekibin yetkinliği, yama süreci, HA ve geri yükleme araçları birlikte değerlendirilir.          |

[MariaDB / MySQL](/teknolojiler/mariadb-mysql) altyapısından PostgreSQL'e geçiş yalnız bağlantı adresini değiştirmek değildir. Stored procedure, sorgu planı, sequence ve karakter karşılaştırma davranışları uygulama açısından ele alınmalıdır.

## PostgreSQL kurulumu öncesi kararlar

[Resmi indirme sayfasından](https://www.postgresql.org/download/) işletim sistemine uygun paket kaynağı seçilir. Bu sayfa adım adım kurulum komutları yerine üretim hazırlığına odaklanır.

- **Sürüm:** [Destek süresi](https://www.postgresql.org/support/versioning/), işletim sistemi ve uzantı uyumu doğrulanır; otomatik olarak “en yeninin bir altı” seçilmez.
- **Erişim:** TLS, kimlik doğrulama, rol yetkileri ve `pg_hba.conf` kuralları birlikte tasarlanır. Uygulama superuser hesabıyla çalıştırılmaz.
- **Bağlantı:** Uygulama havuzu ve gerekiyorsa [PgBouncer pooling modu](https://www.pgbouncer.org/features.html) belirlenir. Sabit bir bağlantı tasarruf oranı vaat edilmez.
- **Depolama:** Veri, WAL, geçici dosya ve yedek büyümesi ayrı ölçülür.
- **İzleme:** Sorgu gecikmeleri, lock beklemeleri, bağlantılar, autovacuum ve replikasyon sağlığı izlenir.

## Replikasyon ve Patroni'nin rolü

PostgreSQL **streaming replication**, değişiklik kayıtlarını içeren **WAL**'ı (Write-Ahead Log) primary'den standby sunuculara aktarır. Fiziksel replikasyonda standby aynı verinin kopyasını tutar; bu, veriyi parçalara dağıtan sharding değildir. [Patroni](/teknolojiler/postgresql-patroni-cluster) ise lider seçimi ve failover yönetimini üstlenir; yedekleme veya bağlantı havuzu yerine geçmez.

[PostgreSQL replikasyon belgesine göre](https://www.postgresql.org/docs/current/warm-standby.html) asenkron aktarımda henüz replica'ya ulaşmamış işlemler failover sırasında kaybolabilir. Senkron aktarımda beklenen onay seviyesi ayrıca önemlidir: WAL'ın alınması, diske yazılması ve sorgulara görünür hâle gelmesi aynı aşama değildir. `remote_apply` ilgili senkron standby'da uygulanmayı bekler; rastgele bir read replica için genel read-after-write garantisi vermez.

## Backup, restore ve PITR

Mantıksal backup, veri ve veritabanı nesnelerini yeniden oluşturulabilir biçimde dışa aktarır; fiziksel backup veritabanı dosyalarını esas alır. Bunlar farklı kurtarma ve taşıma ihtiyaçlarına yanıt verir. [PITR](https://www.postgresql.org/docs/current/continuous-archiving.html), uygun bir base backup ve hedef ana kadar kesintisiz WAL zinciri gerektirir. Yalnız `pg_dump` almak aynı kurtarma imkânını sağlamaz.

Yedek sıklığı ve saklama süresi RPO/RTO hedeflerine göre belirlenir. Başarılı yedek komutu yeterli kanıt değildir: izole ortamda geri yükleme, veri kontrolü ve uygulama açılışı denenir. Ana sürüm yükseltmesinde `pg_upgrade`, dump/restore veya uygun replikasyon yöntemi; uzantı uyumu ve geri dönüş koşullarıyla birlikte seçilir.

## Yaygın sorunlarda ilk kontrol

- **Bağlantı sayısı artıyor:** Havuz sızıntısı, uzun transaction ve uygulama eşzamanlılığı incelenir; yalnız limiti yükseltmek çözüm değildir.
- **Sorgu yavaşlıyor:** Sorgu planı, istatistikler, indeksler ve lock beklemeleri ayrılır; bütün tablolara aynı tuning değeri uygulanmaz.
- **Tablo şişiyor:** Uzun transaction, autovacuum ilerlemesi ve ölü satır birikimi kontrol edilir.
- **Replica geride kalıyor:** WAL üretimi, ağ, disk ve standby replay beklemeleri birlikte incelenir.
- **WAL diski doluyor:** Arşivleme hatası ve slot'ların tuttuğu WAL araştırılır; `pg_wal` dosyaları elle silinmez.

## İlgili hizmetlerimiz

{{< related-services >}}
