1. PostgreSQL Mantıksal Replikasyon Nasıl Çalışır?
PostgreSQL mantıksal replikasyonu, ilişkisel veritabanı değişikliklerini (INSERT, UPDATE, DELETE) ikili (binary) fiziksel bloklar yerine mantıksal veri akışına dönüştürerek hedef sunucuya iletir. Bu işlem, PostgreSQL çekirdeğinde yer alan pgoutput eklentisi ve Logical Decoding altyapısı sayesinde sıfır ek bağımlılıkla çalışır.
Primary sunucu üzerinde bir PUBLICATION ve hedef üzerinde bir SUBSCRIPTION oluşturulduğunda, birincil sunucuda özel bir Replication Slot başlatılır. Bu slot, abonenin (subscriber) en son hangi LSN (Log Sequence Number) adresini okuduğunu takip eder.
2. Replikasyon Slotları Neden Birincil Sunucunun Diskini Doldurur?
PostgreSQL'in en büyük operasyonel tuzaklarından biri sahipsiz veya takılmış replikasyon slotlarıdır. PostgreSQL mimarisinde Checkpoint süreci, diski boşaltmak için eski WAL dosyalarını temizlerken pg_replication_slots tablosundaki en eski restart_lsn değerini referans alır.
pg_wal dizininde saklamaya devam eder. Yazma hızı yüksek bir sistemde birkaç saat içinde 50-200 GB disk alanı tükenebilir ve disk %100 dolduğunda veritabanı PANIC: could not write to log file hatasıyla tamamen kapanır!3. Hayat Kurtaran Parametre: max_slot_wal_keep_size
PostgreSQL 13 sürümünden önce yöneticiler harici cron betikleri yazarak disk doluluğunu takip etmek zorundaydı. PostgreSQL 13 ile gelen max_slot_wal_keep_size parametresi bu sorunu kökten çözer:
Bu parametreye bir limit (örneğin 40GB) atandığında, eğer tüketici kopar ve biriken WAL bu limiti aşarsa; veritabanı birincil sunucuyu korumak amacıyla slotu geçersiz (invalid) kılar ve eski WAL'ları diskten siler. Tüketici tekrar bağlandığında tam bir veri senkronizasyonu (full initial snapshot) yapması gerekir ancak ana veritabanı hiçbir zaman disk dolması yüzünden çökmez.
4. Debezium vs PostgreSQL Yerleşik Replikasyon Karşılaştırması
- PostgreSQL Native Logical: İki PostgreSQL kümesi arasında veri kopyalamak için en verimli yoldur. Ek JVM veya Kafka kümesine gerek duymaz. Ancak DDL (şema değişiklikleri) otomatik iletilmez ve hedef yalnızca PostgreSQL olabilir.
- Debezium CDC: Veritabanı hareketlerini anlık JSON/Avro formatına çevirerek Apache Kafka, Redpanda veya doğrudan RabbitMQ/Kinesis üzerine yazar. Mikroservis mimarileri, Elasticsearch index senkronizasyonu ve veri ambarı (ClickHouse, BigQuery) beslemesi için endüstri standardıdır.
5. CDC İş Yükleri İçin VDS Donanım ve NVMe Disk Önerileri
Yoğun yazma ve WAL akışı olan veritabanı VDS sunucularında disk I/O performansı kritik rol oynar. Klasik SATA SSD'ler yerine en az 50,000+ Write IOPS sunan Enterprise NVMe depolamaya sahip VDS paketleri tercih edilmelidir. Ayrıca, Primary ile Subscriber arasındaki ağ gecikmesinin 5 ms altında olması ve ayrılmış (dedicated) 1 Gbps port bulunması replikasyon lag oluşumunu minimuma indirir.