---
title: Patroni ile PostgreSQL High Availability: "Kesinti Olmazsa Olmaz, Patroni Varsa Sorun Olmaz!"
slug: patroni-ile-postgresql-high-availability-kesinti-o
url: /detay/patroni-ile-postgresql-high-availability-kesinti-o
type: blog
language: Türkçe
entity:
  primary: Patroni ile PostgreSQL High Availability: "Kesinti Olmazsa Olmaz, Patroni Varsa Sorun Olmaz!"
  type: blog
  disambiguation: PostgreSQL yüksek erişilebilirlik için Patroni ile kesintisiz çalışın! Otomatik failover ve lider seçimi sağlar.
  categories:
    - name: Bilişim Ve İletişim Teknolojileri
      slug: bilisim-ve-iletisim-teknolojileri
      url: /kategori/bilisim-ve-iletisim-teknolojileri
    - name: Yazılım Ve Yapay Zekâ
      slug: yazilim-ve-yapay-zeka
      url: /kategori/yazilim-ve-yapay-zeka
  tags:
    - Etcd
    - RAFT
    - High Availability
    - Patroni
    - PostgreSQL
author: Yakup Hamit Hancı
created_at: 2025-05-10T10:06:42.580404+03:00
updated_at: 2025-05-18T23:34:41.727021+03:00
image: https://cdn.t3pedia.org/media/uploads/2025/05/10/bOGbp9KWrZb0UavYayQTb4LuJOe2QzU4.png
---

# Patroni ile PostgreSQL High Availability: "Kesinti Olmazsa Olmaz, Patroni Varsa Sorun Olmaz!"

<!-- CONTEXT: Article Content for "Patroni ile PostgreSQL High Availability: "Kesinti Olmazsa Olmaz, Patroni Varsa Sorun Olmaz!"" -->

## Article Content

*"PostgreSQL harika bir veritabanı... ama kesinti yaşandığında? Patroni burada devreye giriyor."*

### **Giriş: Dağıtık Sistemlerde PostgreSQL'in Derdi**

PostgreSQL, tek başına son derece güvenilir ve performanslı bir veritabanıdır. Ancak işler büyüdüğünde, yani veritabanını dağıtık bir sistem içinde birden fazla sunucuda yüksek erişilebilir şekilde kullanmak istediğinizde, birtakım zorluklar ortaya çıkar:

- **Lider (primary) sunucu arızalanırsa ne olacak?**
- **Yedek sunucular (replica) ne zaman devreye girmeli?**
- **Manuel müdahale mi gerekiyor?**
- **Veri tutarlılığı ve erişilebilirlik arasında denge nasıl sağlanacak?**

İşte bu gibi durumlarda Patroni hayat kurtarıyor.

### **Patroni Nedir, Ne Yapar?**

Patroni, PostgreSQL için otomatik [failover](/tr/detay/failover-test-a56a2/llms.txt), [leader election](/tr/detay/patroni-with-postgresql-high-availability-no-downt/llms.txt) (lider seçimi), health check ve cluster yönetimi sağlayan bir HA (High Availability) yöneticisidir. Aslında Patroni, PostgreSQL'e HA kazandıran akıllı bir düzenleyici (orchestrator)'dir. Basit bir anlatımla Patroni:

- Etcd veya Consul gibi bir dağıtık KV store ile küme durumunu tutar,
- Sunucuların sağlığını izler,
- Lider düştüğünde otomatik olarak yeni bir lider seçer ve şekli değiştirir,
- PostgreSQL'in replikasyon ayarlarını dinamik olarak düzenler.

> Bu yazıda HAProxy veya [PgBouncer](/tr/detay/proxy-179a8/llms.txt) gibi ara katmanlardan bahsetmeyeceğiz. Onlara özel yazılar yakında yayınlanacak, takipte kalın! 

### **CAP Teoremi ve Patroni**

CAP teoremi der ki: Üç şeyden sadece ikisini seçebilirsin:

**1. Consistency (Tutarlılık)**

**2. Availability (Erişilebilirlik)**

**3. Partition Tolerance (Bölünebilirlik toleransı)**

Dağıtık sistemlerde ağ bölünmeleri (partition) kaçınılmaz olduğuna göre, geriye tutarlılık (Consistency) ile erişilebilirlik (Availability) arasında bir seçim yapmak kalıyor. Patroni, "Consistency + Partition Tolerance" tarafını seçer. Neden?

- Birden fazla primary (yazılabilir) sunucuya izin vermez.
- Yazılacak verilerin tutarlığını korumaya öncelik verir.
- Ancak bu durum, bazen sistemi yazma işlemleri için geçici olarak erişilemez hale getirebilir.

### **Etcd ve Consul: Patroni'nin Dayandığı Taşlar**

Patroni, bir liderin kim olduğunu ve cluster'ın genel sağlık durumunu merkezi olarak tutmak için bir KV Store'a ihtiyaç duyar. Bu genellikle:

- [etcd](https://etcd.io/)
- veya [Consul](https://www.consul.io/) üzerinden yapılır.

Bu sistemler:

- RAFT protokolü ile dağıtık bir consensus sağlar,
- Yüksek erişilebilirlik sağlamak için en az 3 node ile çalışırlar,
- Patroni her sunucuda bu KV store'a yazma ve okuma işlemleri yapar.

### **Lider Seçimi Nasıl Gerçekleşirir?**

Patroni, lider seçimini Etcd üzerinden gerçekleştirir. Süreç şuna benzer:

**1.** Her PostgreSQL örneği, bağlı olduğu Patroni botu aracılığıyla Etcd'de belirli bir anahtarın süresi dolmuş olup olmadığını kontrol eder.

**2.&#32;**Eğer liderlik anahtarı boştaysa, bot bu anahtarı belirli bir süreliğine almak için Etcd'ye başvurur.

**3.&#32;**Etcd, arka planda RAFT protokolü kullanarak yalnızca bir örneğin bu anahtarı almasına izin verir. Böylece yarış durumları engellenmiş olur.

**4.** Anahtarı ilk alan örnek, sistemin lideri olarak kabul edilir ve Patroni botu bu PostgreSQL örneğini primary (lider) olacak şekilde yapılandırır.

**5.** Diğer örnekler, bu liderliği fark eder ve kendilerini otomatik olarak replica (yedek) moduna alır.

Bu sayede lider, merkezi bir kontrol noktası olmadan dağıtık biçimde ve tutarlı şekilde seçilir.

### **Kısıtlamalar ve Sınırlar**

- **Single Primary mimarisi**: Aynı anda yalnızca bir sunucu yazılabilir durumda olur.
- **Etcd/Consul'a bağımlılık**: Bu sistemler de HA olmalı. Aksi halde Patroni de çalışamaz.
- **Split-brain önleme**: Yanlış lider seçimi olmaması için karmaşık kontrol mekanizmaları gerekir.

### **Docker ile Patroni Kurulumu (Minimal Örnek)**

Basit bir örnek için 3 PostgreSQL + Patroni konteyneri ve 3 etcd konteyneri kullanabiliriz:

Öncelikle geliştirici [github ](https://github.com/patroni/patroni/tree/master)reposundan proje dosyasını temin ediniz. Proje dosyasındaki Dockerfile'ı build ederek örnekte kullanacağımız patroni [docker](/tr/detay/docker-8baa9/llms.txt) image'ını oluşturunuz.




*Konuya dair örnek (Yazar tarafından oluşturulmuştur)*

### **Kapanış ve Son Sözler**

Patroni, PostgreSQL'i HA yapıya taşımak için oldukça etkili ve esnek bir çözümdür.

> Bir sonraki yazımızda, Patroni cluster'ına HAProxy ile yönlendirme yapmayı ve PgBouncer ile bağlantı havuzu oluşturmayı anlatacağız. Kaçırmayın! 

**Takipte Kalın, Verileriniz Ayakta Kalsın!**

<!-- CONTEXT: Academic Sources and References for "Patroni ile PostgreSQL High Availability: "Kesinti Olmazsa Olmaz, Patroni Varsa Sorun Olmaz!"" -->

## Academic Sources and References

1. “Etcd Documentation.” etcd.io. Erişim tarihi: 10 Mayıs 2025. https://etcd.io/docs/.“Consul Documentation.” HashiCorp. Erişim tarihi: 10 Mayıs 2025. https://developer.hashicorp.com/consul/docs.“PostgreSQL Documentation: Streaming Replication.” PostgreSQL Global Development Group. Erişim tarihi: 10 Mayıs 2025. https://www.postgresql.org/docs/current/warm-standby.html.“Patroni Documentation.” Read the Docs. Erişim tarihi: 10 Mayıs 2025. https://patroni.readthedocs.io/.“Raft Consensus Algorithm Explained.” The Secret Lives of Data. Erişim tarihi: 10 Mayıs 2025. https://thesecretlivesofdata.com/raft/.“Patroni Repository.” GitHub. Erişim tarihi: 10 Mayıs 2025. https://github.com/patroni/patroni.