ÖZET VE TEKNİK CEVAP
Son güncellenen kayıtlar için okumaları kısa bir süre ana sunucuya (Primary) yönlendiren 'Kendi-Yazdığını-Okuma' (Read-Your-Own-Writes) kuralı uygulayarak veya istemci oturum belirteçlerinde veritabanı LSN/GTID değerlerini takip ederek.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
Tek sunucu sınırlarını aşmak için veritabanı mimarileri yazmaları tek bir Ana (Primary) sunucuya iletirken okuma sorgularını asenkron Okuma Replikalarına (Read Replicas) dağıtır. Ağ üzerinden replikasyon asenkron olduğundan, replikalar ana sunucunun milisaniyelerce (yoğun yük altında saniyelerce) gerisinden gelir. Kullanıcı profilini güncelleyip sayfayı yenilediğinde istek geciken bir replikaya giderse eski profil görünür. Çözüm; kullanıcıyı yazma işleminden sonra N saniye boyunca Ana sunucuya sabitlemek (Session Pinning) veya istemci çereziyle işlem LSN/GTID değerini taşıyıp replika o noktaya ulaşana kadar beklemektir.
2. Doğru Kullanım Senaryosu
Asenkron replikasyonlu çok sunuculu veritabanı kümeleri kullanan ve yüksek okuma/yazma oranına (örn. %90 okuma, %10 yazma) sahip tüm web uygulamaları ve API'ler.
3. Prodüksiyon Arıza Modları
1) Bayat Arayüz Anomalisi: Kullanıcının ürün ekledikten sonra listeye dönüp ürünü görememesi ve mükerrer kayıt oluşturması; 2) Ana Sunucu İzdihamı: Bayat veri korkusuyla tüm okumaları Ana sunucuya yönlendirip yazma sunucusunu çökertmek; 3) Ağır Analitik Kilitlenmesi: Replika üzerinde çalışan dev raporların replikasyon iş parçacığını kilitleyip gecikmeyi saatlere çıkarması.
4. Teşhis ve Telemetri Sinyalleri
PostgreSQL `replay_lag_bytes`, MySQL `Seconds_Behind_Master` gecikme metrikleri, mükerrer kullanıcı işlem oranları ve Primary/Replica CPU ve disk kullanım dağılımı.
5. Önleme ve Mimari Bariyerler
Çerez tabanlı oturum yönlendirmesi uygulayın (POST/PUT sonrası 5 saniye Primary'den oku); ProxySQL veya AWS Aurora gibi araçlarla nedensel tutarlılık proxy'leri kullanın ve ağır raporlama sorgularını özel analitik replikalara ayırın.
6. Mimari Ödünleşimler (Trade-offs)
Mükemmel yatay okuma ölçeklenebilirliği sağlar ve ana sunucuyu rahatlatır; buna karşılık yönlendirme mantığı karmaşıklığı ve veri yazmayan kullanıcılar için anlık bayatlık riski taşır.
Vaka İncelemesi (TinyCTO Örneği)
TinyCTO Vaka 064: Bir bankacılık portalında para transferi yapan kullanıcılar bakiye ekranına yönlendiriliyordu. Bakiye ekranı 400 ms geriden gelen asenkron replikadan okuduğu için eski bakiye göründü; kullanıcılar panikleyip transferi ikinci kez yaptı. Transfer sonrası 3 saniyelik Primary okuma sabitlemesi uygulanarak tüm mükerrer işlem şikayetleri sıfırlandı.
İnteraktif Konsept Alıştırmaları
3 Alıştırma'Kendi-Yazdığını-Okuma' (Read-Your-Own-Writes) tutarlılığı nedir?
GTID / LSN takibi nedensel okuma tutarlılığını nasıl sağlar?
Yüksek yazma yükü altında replikasyon gecikmesinin aniden patlamasına ne sebep olur?
Okuma Kopyası Gecikmesi ve Read-Your-Writes Tutarlılığı — Sıkça Sorulan Sorular
GET istekleri asla Ana (Primary) veritabanına yönlendirilmemeli midir?
Hayır. Kritik işlemler (ödeme onayı, şifre sıfırlama veya bir POST yazmasının hemen ardından gelen ilk okuma) yarış durumlarını önlemek için doğrudan Primary'den okunmalıdır.
Replikasyon gecikmesi veritabanı bağlantı havuzlarını nasıl etkiler?
Sorgular replikaların yetişmesini beklerse veya bayat veri nedeniyle tekrar denenirse bağlantı tutma süreleri uzar ve PgBouncer gibi havuzlar kilitlenir.
Veritabanı proxy'si olmadan Read-Your-Own-Writes uygulamanın en basit yolu nedir?
Yazma işlemi yapan HTTP yanıtlarına kısa ömürlü bir zaman damgası çerezi (`last_write_at`) koyun. Eğer `şimdi - last_write_at < 5sn` ise sonraki okumaları ana veritabanına yönlendirin.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸Asenkron replikasyon yüksek yazma performansı sunar çünkü Ana sunucu istemciye commit dönmeden önce replikaların onay vermesini beklemez.
- ▸Senkron replikasyon sıfır gecikmeyi garanti eder; ancak yazma gecikmesini kümedeki en yavaş replikanın hızına düşürür.
Yaygın Yanılgılar
- ✗Okuma replikalarının tüm veritabanı darboğazlarını çözeceğini sanmak; eğer yazma hacmi tek Ana sunucuyu kilitliyorsa okuma replikaları hiçbir fayda sağlamaz.
Karar Kılavuzu & Önceliklendirme
Kritik olmayan okuma trafiğinin %90'ını okuma replikalarına yönlendirin; ancak herhangi bir kullanıcı yazma işlemini takip eden 5 saniyelik pencerede okumaları mutlaka ana sunucuya sabitleyin.
Doğrulanmış Kaynaklar & Referanslar
- [BOOK]Designing Data-Intensive Applications: Chapter 5 (Replication)— O'Reilly Media (2017)
- [OFFICIAL-DOC]Eventually Consistent - Revisited— All Things Distributed (2008)
