MySQL ve PostgreSQL Ekosistemlerinde Replikasyon ve Yüksek Erişilebilirlik Mimarileri

Replikasyon modelleri, yüksek erişilebilirlik kümeleri ve afet kurtarma mimarileri RPO, RTO ve tutarlılık hedeflerine göre karşılaştırması

MySQL ve PostgreSQL replikasyon, yüksek erişilebilirlik ve afet kurtarma mimarisi

Bir veri tabanının kopyasını farklı bir sunucuda tutmak tek başına yüksek erişilebilirlik (High Availability - HA) sağlamaz. Replikasyon veriyi aktarırken, yüksek erişilebilirlik mimarisi arızayı algılar, doğru kopyayı seçer, eski yazma noktasını devreden çıkarır ve istemci trafiğini yeni düğüme yönlendirir. Afet kurtarma (Disaster Recovery - DR) ise çoğunlukla daha uzak bir coğrafi bölgede, daha esnek kurtarma hedefleriyle çalışan bağımsız bir katmandır.

MySQL ile PostgreSQL mimarilerini karşılaştırırken üç temel soruyu birbirinden ayırmak gerekir:

  1. Veri nasıl aktarılıyor? İkili günlük (binary log - binlog), fiziksel önceden yazma günlüğü (Write-Ahead Logging - WAL) veya mantıksal veri akışı yöntemleri kullanılır.
  2. Kesinti anında yük devretme kararını hangi mekanizma veriyor? MySQL Group Replication, Galera çoğunluk (quorum) mekanizması veya Patroni ile dağıtık yapılandırma deposu (Distributed Configuration Store - DCS) seçenekleri devreye girer.
  3. İstemci uygulamaları yeni yazma noktasını nasıl buluyor? Veri tabanı yönlendiricisi (MySQL Router), vekil sunucular (proxy), yük dengeleyiciler veya servis keşif araçları bu görevi üstlenir.

Bu incelemede MySQL 8.4 ve PostgreSQL 18 sürümlerinin güncel terminolojisi ve özellikleri temel alınmıştır. Sürüm yükseltmelerinde özellik ve uyumluluk tabloları ayrıca doğrulanmalıdır.

1. RPO, RTO ve tutarlılık hedeflerinin veri güvenliğindeki önemi

Yüksek erişilebilirlik tasarımlarında kurumun veri kaybı toleransı ile kesinti süresi beklentilerinin en başta netleştirilmesi gerekir.

  • Hedeflenen kurtarma noktası (Recovery Point Objective - RPO), olası bir kesinti anında kabul edilebilecek maksimum veri kaybı miktarını ifade eder.
  • Hedeflenen kurtarma süresi (Recovery Time Objective - RTO), servislerin arıza sonrasında yeniden çalışır duruma gelmesi gereken süreyi tanımlar.
  • Okuma tutarlılığı, ikincil sunucular üzerinden yapılan bir sorgunun en güncel yazma işlemini yansıtma güvencesini belirler.
  • Yazma sürekliliği, ağ izolasyonu senaryolarında sistemin yeni yazma isteklerini karşılamaya devam etme yeteneğini gösterir.

Ağ bölünmesi senaryolarında tutarlılık ile erişilebilirlik arasındaki zorunlu tercih CAP teoremiyle açıklanır. Normal çalışma şartlarındaki işlem onay (commit) gecikmelerini değerlendirirken ise PACELC yaklaşımı daha açıklayıcıdır çünkü ağ bölünmesi bulunmadığında dahi uzak bir düğümden onay beklemek doğal bir gecikmeye yol açar.

Sıfır veri kaybı (sıfır RPO) hedefi tek bir yazılım özelliği veya parametresi değil, uçtan uca tasarlanan bir mimari kurgunun sonucudur. Bu hedefe ulaşmak için işlem onayının kapsamı, hangi ikincil sunucunun birincil role terfi edeceği, düğüm izolasyonu (fencing), disk kalıcılık ayarları ve yük devretme (failover) adımları birlikte ele alınmalıdır.

2. Yerleşik replikasyon modellerinin özellikleri ve ayrıştığı noktalar

Veri tabanlarının sunduğu yerleşik replikasyon yetenekleri, iş yükünün veri güvenliği ve gecikme toleransına göre yapılandırılır.

MySQL tarafındaki klasik replikasyon, ana sunucudaki değişiklikleri ikili günlük olayları biçiminde ikincil sunuculara ulaştırır. İkili günlükler satır, ifade veya karma formatta tutulabildiği için bu yapı blok replikasyonu olarak nitelendirilemez. PostgreSQL fiziksel replikasyonu, önceden yazma günlüğü kayıtlarını veri tabanı kümesinin tamamı için fiziksel düzeyde kopyalar. PostgreSQL mantıksal replikasyonu (logical replication) ise yayın ve abonelik (publication/subscription) mimarisi üzerinden satır değişikliklerini belirlenen tablo, satır veya sütun bazında filtreleyerek aktarır.

Temel replikasyon yöntemlerinin karşılaştırılması

Farklı replikasyon modellerinin sağladığı veri güvenliği ile gecikme dengesi operasyonel hedeflere göre değişiklik gösterir.

KriterMySQL AsenkronMySQL Yarı SenkronPostgreSQL Fiziksel AsenkronPostgreSQL Fiziksel SenkronPostgreSQL Mantıksal
Aktarılan veriÇoğunlukla satır tabanlı ikili günlük olaylarıAsenkron model ile aynı ikili günlük akışıFiziksel WAL kayıtlarıFiziksel WAL kayıtlarıMantıksal satır değişiklikleri
KapsamFiltrelerle veri tabanı veya tablo seçilebilir, dikkatli mimari tasarım gerektirirAsenkron model ile aynı filtreleme yapısına sahiptirVeri tabanı kümesinin tamamını kapsarVeri tabanı kümesinin tamamını kapsarYayın tanımıyla tablo, satır veya sütun filtresi uygulanabilir
İşlem onayı bekleme noktasıYalnızca ana sunucudaki yerel işlem onayını beklerBelirlenen sayıda ikincil sunucunun olayı aktarım günlüğüne yazıp diske kaydettiğine dair onayı bekler, işlemin uygulanmasını beklemezYalnızca birincil sunucudaki yerel işlem onayını beklerYapılandırılan seviyeye göre ikincil sunucunun yazma, diske boşaltma veya uygulama onayını beklerVarsayılan olarak asenkrondur, abone sunucu istenirse senkron yedek olarak yapılandırılabilir
Yük devretmede RPO hedefiReplikasyon gecikmesi kadar veri kaybı riski barındırırAsenkron modele göre daha düşüktür, zaman aşımı durumunda asenkron moda geçebilirReplikasyon gecikmesi kadar veri kaybı riski barındırırDoğru senkron sunucu seçildiğinde onaylanmış işlemler için sıfır veri kaybı sağlarAsenkron kullanımda replikasyon gecikmesi kadar kayıp riski vardır, abonelik yük devretme planı gerektirir
İkincil sunucuda güncel okuma garantisiSağlanmazSağlanmaz, aktarım günlüğüne yazma onayı verinin işlendiğini göstermezSağlanmazUygulama seviyesinde senkronizasyon seçilirse işlem görünür olana kadar bekletilebilirVeri uygulama gecikmesine bağlı olarak değişkenlik gösterir
Şema ve DDL yönetimiVeri tanımlama dili (DDL) komutları ikili günlük üzerinden replike edilirAsenkron model ile aynı biçimde DDL komutlarını replike ederFiziksel düzeyde tüm şema değişikliklerini doğrudan yansıtırFiziksel düzeyde tüm şema değişikliklerini doğrudan yansıtırŞema ve DDL komutları replike edilmez, sayaçlar ve büyük nesneler ayrı süreçlerle yönetilir
Sürüm ve platform esnekliğiUyumluluk matrisine bağlı olarak kontrollü sürüm yükseltmelerine izin verirAsenkron model ile aynı yükseltme kurallarına tabidirFarklı ana sürümler arasında kullanılamaz, aynı işletim sistemi mimarisini gerektirirFarklı ana sürümler arasında kullanılamaz, aynı işletim sistemi mimarisini gerektirirFarklı ana sürümler ve işletim sistemleri arasında kesintisiz veri göçü sağlar
Öne çıkan kullanım alanıOkuma kopyaları, raporlama altyapıları ve düşük maliyetli afet kurtarma ortamlarıAynı veri merkezinde düşük veri kaybı hedefleyen altyapılarYedek sunucular, okuma ölçekleme ve zaman noktasına kurtarma (Point-in-Time Recovery - PITR) altyapılarıSıfır veri kaybı hedefleyen aynı veri merkezindeki yüksek erişilebilirlik kümeleriSeçici veri dağıtımı, veri göçü (migration), konsolidasyon ve ana sürüm yükseltme projeleri

MySQL yarı senkron replikasyonunda kaynak sunucu, en az bir ikincil sunucunun işlemi teslim alıp aktarım günlüğüne (relay log) güvenle kaydettiğini doğrular, fakat işlemin ikincil sunucu üzerinde fiilen uygulanmasını beklemez. Tanımlanan zaman aşımı süresi aşıldığında sistem otomatik olarak asenkron moda geçebilir. Bu nedenle yarı senkron çalışma modelinin tek başına mutlak veri güvenliği sağladığı varsayımı yanıltıcı olabilir.

PostgreSQL tarafında senkronluk seviyesi daha esnek parametrelerle yönetilir. synchronous_standby_names parametresiyle onay sürecine katılacak yedek sunucular belirlenirken, synchronous_commit parametresiyle onayın ağdan alınma, diske yazılma veya veriye uygulanma aşamalarından hangisinde bekleneceği tayin edilir. Senkron çalışma modeli işlem onay adımlarına en az bir ağ gidiş dönüş süresi eklediği için bu gecikme mimari tasarımda mutlaka hesaba katılmalıdır.

Mantıksal replikasyon yöntemi fiziksel yüksek erişilebilirliğin doğrudan bir alternatifi değildir. Bu modelde şema ve DDL yönetimi harici adımlarla yürütülmeli, sayaç (sequence) değerleri yük devretme öncesinde eşitlenmeli ve kısıt çatışmaları dikkatle ele alınmalıdır. PostgreSQL sürümlerindeki mantıksal yuva senkronizasyon yetenekleri gelişmiş olsa da, olası yük devretmelerde aboneliklerin yeni ana sunucuya yönlendirilmesi ayrıntılı bir geçiş planı gerektirir.

3. Aynı veri merkezinde yüksek erişilebilirlik mimarileri

Donanım, işletim sistemi veya ağ düzeyindeki yerel arızalarda iş sürekliliğini korumak için kanıtlanmış kümeleme mimarilerinden yararlanılır.

InnoDB Cluster, Galera ve Patroni çözümlerinin karşılaştırılması

Farklı veri tabanı platformlarında lider seçimi, veri tutarlılığı ve istemci yönlendirme mekanizmaları kurumsal gereksinimlere göre değerlendirilir.

KriterMySQL InnoDB ClusterPercona XtraDB Cluster (PXC)MariaDB Galera ClusterPostgreSQL ve Patroni
Temel bileşenlerMySQL Group Replication, MySQL Shell AdminAPI ve MySQL RouterPercona Server, Galera/wsrep eklentisi ve durum aktarım araçlarıMariaDB Server, Galera/wsrep eklentisi ve durum aktarım araçlarıPostgreSQL fiziksel akış replikasyonu, Patroni yönetim katmanı ve DCS
Varsayılan mimariTek birincilli yapı, çok birincilli seçenek mevcutturÇok birincilli yazma yeteneğiÇok birincilli yazma yeteneğiTek birincilli mimari
Replikasyon modeliİşlem sıralama ve sertifikasyon tabanlı grup replikasyonuSertifikasyon tabanlı ve neredeyse senkron yazma kümesi replikasyonuSertifikasyon tabanlı ve neredeyse senkron yazma kümesi replikasyonuAsenkron veya senkron fiziksel WAL akışı
Karar ve çoğunluk mekanizmasıGroup Replication bünyesindeki Paxos tabanlı koordinasyon ve çoğunluk mekanizmasıGalera birincil bileşen kuralı ve çoğunluk mekanizmasıGalera birincil bileşen kuralı ve çoğunluk mekanizmasıPatroni DCS üzerinde süreli lider kilidi kullanır, konsensüs mekanizmasını etcd veya Consul katmanı sağlar
Yazma noktasıVarsayılan olarak tek birincil sunucuTüm düğümler doğrudan yazma isteği kabul edebilirTüm düğümler doğrudan yazma isteği kabul edebilirYalnızca tek birincil sunucu
Yatay yazma ölçeklemeÇok birincilli yapıda dahi çakışma ve sertifikasyon maliyeti bulunurGenel amaçlı yatay yazma ölçekleme sunmaz, her yazma işlemi tüm kümeye iletilirGenel amaçlı yatay yazma ölçekleme sunmaz, her yazma işlemi tüm kümeye iletilirYerleşik olarak yatay yazma ölçekleme sağlamaz
Yük devretme davranışıİkincil sunucu otomatik olarak birincil role terfi ederKlasik birincil seçimi bulunmaz, vekil sunucu trafiği çoğunlukta kalan sağlıklı düğüme yönlendirirKlasik birincil seçimi bulunmaz, vekil sunucu trafiği çoğunlukta kalan sağlıklı düğüme yönlendirirEn güncel yedek sunucu lider kilidini devralarak otomatik terfi eder
Bölünmüş beyin savunmasıÇoğunluk kuralı geçerlidir, üç üyeli yapıda bir düğüm arızası tolere edilirBirincil bileşen kuralı uygulanır, azınlıkta kalan taraf yazma işlemlerini durdururBirincil bileşen kuralı uygulanır, azınlıkta kalan taraf yazma işlemlerini durdururDCS lider kilidi, rol düşürme ve altyapı düzeyinde düğüm izolasyonu ile korunur
İstemci yönlendirmesiDoğrudan ürün ailesi içindeki MySQL Router bileşeniyle sağlanırGenellikle ProxySQL veya HAProxy katmanıyla yürütülürGenellikle MaxScale, ProxySQL veya HAProxy ile yürütülürPatroni REST sağlık kontrolünü izleyen HAProxy veya Envoy yapılarıyla sağlanır, PgBouncer ile bağlantı havuzu desteklenir
Yeni düğüm hazırlamaKlon eklentisi, dağıtık kurtarma ve AdminAPI araçlarıyla gerçekleştirilirKademeli durum aktarımı veya tam durum aktarımı ile yürütülürKademeli durum aktarımı veya tam durum aktarımı ile yürütülürpg_basebackup veya pgBackRest gibi fiziksel yedekleme araçlarıyla sağlanır
Geniş alan ağı uyumuKüme üyeleri arasında düşük ağ gecikmesi hedeflenirYüksek ağ gecikmesi işlem onay sürelerini ve akış kontrolünü doğrudan etkilerYüksek ağ gecikmesi işlem onay sürelerini ve akış kontrolünü doğrudan etkilerSenkron yedek uzak ağdaysa gecikme artar, bu nedenle uzak düğümler genellikle asenkron yapılandırılır
Operasyonel profilMySQL ekosisteminde en bütünleşik yönetim deneyimini sunarMySQL uyumlu Galera altyapısı ve gelişmiş kurumsal yönetim araçları sağlarMariaDB ekosisteminin yerleşik özelliklerini ve Galera yeteneklerini bir araya getirirModüler ve esnek bir yapı sunar, DCS ve vekil sunucu bileşenleri bağımsız olarak işletilir

MySQL InnoDB Cluster mimarisi

Harici bir orkestrasyon aracına ihtiyaç duymadan, MySQL’in kendi bileşenleriyle kararlı bir küme yapısı oluşturulabilir.

InnoDB Cluster çözümü, Group Replication yeteneklerini MySQL Shell AdminAPI ve MySQL Router ile bir araya getirir. Çevrimiçi işlem iş yüklerinde operasyonel sadelik adına genellikle tek birincilli (single-primary) model tercih edilir. Group Replication çok birincilli modda çalışabilse de, eşzamanlı çakışan işlemlerde geri dönüş senaryosu (rollback) riski doğabileceğinden her iş yükü yatay yazma ölçeklemesinden verim sağlayamaz.

Grup replikasyonu çoğunluk ilkesiyle çalışır ve bir sunucu arızasını kesintisiz tolere etmek adına en az üç oy veren üyeye ihtiyaç duyar. Yeni birincil sunucu seçildiğinde birikmiş işlemler uygulanmadan trafiğin açılmasını engellemek ve güncel olmayan okuma riskini bertaraf etmek amacıyla group_replication_consistency seviyeleri dikkatle yapılandırılmalıdır.

Percona XtraDB Cluster ve MariaDB Galera altyapısı

Çok birincilli yazma gerektiren ortamlarda sertifikasyon tabanlı replikasyon mimarileri öne çıkar.

Percona XtraDB Cluster ile MariaDB Galera mimarilerinin temelinde sertifikasyon odaklı replikasyon modeli yer alır. Bu yaklaşımda işlem önce yerel düğümde yürütülür, ardından yazma kümesi tüm düğümlere gönderilerek sertifikasyondan geçer ve onaylanır. Neredeyse senkron (virtually synchronous) tanımı, istemciye işlem onayı dönmeden önce tüm düğümlerin veriyi fiziksel olarak işlediği anlamına gelmez.

Bütün düğümlerin yazma kabul etmesi, her uygulama iş yükünün yatayda kolayca ölçekleneceği anlamına gelmez. Aynı veri satırlarına farklı düğümlerden eşzamanlı yazılması durumunda sertifikasyon çakışmaları artar ve sistemde geri dönüş senaryoları devreye girer. Bu gibi senaryolarda uygulamanın yeniden deneme mekanizmasına sahip olması beklenir. Ekiplerin çoğu, çok birincilli yeteneğe rağmen operasyonel kararlılığı korumak için yazma trafiğini tek bir ana düğüme yönlendirmeyi tercih eder.

İki çözüm arasındaki tercih belirlenirken sürüm yaşam döngüsü, durum aktarım yöntemleri ve destek gereksinimleri göz önünde bulundurulmalıdır. Percona araç seti ve tam MySQL uyumu ön planda olduğunda PXC altyapısı, MariaDB özellikleri ile MaxScale ekosistemi tercih edildiğinde ise MariaDB Galera mimarisi daha uygundur.

PostgreSQL ve Patroni mimarisi

PostgreSQL altyapılarında dağıtık konsensüs katmanıyla lider seçimi ve otomatik yük devretme süreçleri güvenle yürütülebilir.

Patroni, PostgreSQL’in yerleşik akış replikasyonu üzerinde görev yapan bir yüksek erişilebilirlik orkestrasyon katmanıdır. etcd veya Consul gibi bir dağıtık yapılandırma deposu (DCS) üzerinden süreli lider kilidi alarak çalışır. Konsensüs mekanizmasını Patroni’nin kendisi değil, doğrudan arkasındaki DCS altyapısı sağlar.

Patroni arıza anında yük devretme kararını üretirken, istemci bağlantılarının yönlendirilmesi için HAProxy veya Envoy gibi yük dengeleyiciler devreye alınır. Bu yük dengeleyiciler sağlık kontrollerini Patroni’nin REST API uç noktası üzerinden gerçekleştirir. Bağlantı havuzu amacıyla kullanılan PgBouncer bileşeni ise tek başına bir yük devretme aracı olarak değerlendirilmemelidir.

Patroni’nin senkron mod yetenekleriyle otomatik yük devretmelerde veri kaybı riski en aza indirilir. synchronous_mode_strict seçeneği tercih edildiğinde, sağlıklı senkron yedek bulunmuyorsa yazma işlemleri durdurularak veri dayanıklılığı hizmet sürekliliğinin önüne konur. Olası bölünmüş beyin senaryolarına karşı ise lider kilidinin yanı sıra işletim sistemi seviyesinde gözetleme mekanizmaları (watchdog) ve altyapı düzeyinde düğüm izolasyonu (fencing) yöntemleriyle koruma sağlanır.

4. Çoklu yazma mimarilerinde veri tutarlılığı ve çakışma yönetimi

Birden fazla düğüme aynı anda yazma senaryolarında veri tutarlılığı uygulama düzeyinde belirlenen stratejilerle korunur.

Değerlendirme KriteriMySQL InnoDB Cluster Çok BirincilliPXC ve MariaDB GaleraPostgreSQL Yerleşik Mantıksal ReplikasyonEDB Postgres Distributed (PGD)
Birden fazla düğüme yazma imkanıEvet, tüm düğümler yazma kabul edebilirEvet, tüm düğümler yazma kabul edebilirAbone sunucuya yerel yazma yapılabilir, ancak bu yapı hazır bir çok birincilli çözüm sunmazEvet, aktif-aktif mimariyle çoklu yazmayı destekler
Çakışma yönetimi yaklaşımıİşlem onayı öncesinde sertifikasyon uygulanır, çakışan işlem için geri dönüş senaryosu (rollback) işletilirSertifikasyon kontrolü yapılır, ilk yazan kazanır kuralı geçerlidir ve yeniden deneme ihtiyacı doğarKısıt çatışmaları veri uygulama sürecini durdurabilir, otomatik genel bir çözüm mekanizması bulunmazGelişmiş çakışma algılama ve çözme politikaları ile yazma lideri seçenekleri sunar
Geniş alan ağı modeliAğ gecikmesine karşı yüksek hassasiyet gösterirAğ gecikmesine ve akış kontrolü baskısına karşı hassastırAsenkron çalıştığı için geniş alan ağlarına daha dayanıklıdır, nihai tutarlılık ve operasyonel takip gerektirirCoğrafi olarak dağıtık yapılar için tasarlanmıştır, varsayılan mantıksal veri akışını asenkron yürütür
Temel değerlendirmeMySQL ortamlarında sınırlı ve dikkatli kurgulanması gereken bir yapıdırAynı veri merkezindeki yüksek erişilebilirlik için uygundur, veri yerelliği iyi planlanmalıdırVeri göçü, seçici dağıtım ve CDC projeleri için elverişlidir, eksiksiz bir çoklu yazma paketi değildirLisans maliyetleri, çakışma modelleri ve uygulama uyumluluğu birlikte değerlendirilmelidir

PostgreSQL’in yerleşik mantıksal replikasyon yeteneği yayın ve abonelik mekanizması sunar. Buna karşın DDL yönetimi, sayaçların senkronizasyonu, küresel tekil anahtarlar ve otomatik çakışma çözümü gibi kritik unsurları içermediği için bu yapı hazır bir çok birincilli sistem olarak değerlendirilmemelidir. Sektörde daha önce PG-BDR adıyla bilinen EDB Postgres Distributed (PGD) çözümü, aktif-aktif topolojilerde gelişmiş çakışma yönetimi sunar. Bu çözümün yerleşik bir PostgreSQL yeteneği olmadığı, ticari bir ürün olarak lisans koşullarıyla birlikte ele alınması gerektiği unutulmamalıdır.

Çok birincilli mimarilerde temel soru kaç düğüme yazılabileceği değil, aynı iş nesnesi iki farklı lokasyonda eşzamanlı değiştiğinde hangi sonucun geçerli sayılacağıdır. Son yazanın kazanması, işlemin geri dönüp yeniden denenmesi veya verinin sahipliğinin coğrafi bölgelere paylaştırılması gibi kararlar kurumun iş kurallarına göre şekillendirilir.

5. Afet kurtarma senaryoları ve çoklu veri merkezi mimarileri

Bölgeler arası yüksek erişilebilirlik tasarımlarında ağ gecikmesi ve ayrışan işlem riskleri asenkron replikasyon modelleriyle sınırlandırılır.

Aynı veri merkezinde çalışan bir yüksek erişilebilirlik kümesini geniş alan ağı üzerinden farklı coğrafyalara yaymak genellikle yüksek işlem gecikmesine ve geniş hata alanlarına yol açar. Bu nedenle her bölgede bağımsız yerel yüksek erişilebilirlik kümeleri kurmak ve bu bölgeleri birbirine asenkron afet kurtarma köprüleriyle bağlamak daha sağlıklı bir mimari yaklaşımdır.

Afet kurtarma modellerinin veri kaybı toleransına göre karşılaştırılması

Coğrafi yedeklilik sağlayan mimariler kurtarma noktası ve geçiş güvenliği kriterleriyle yapılandırılır.

Değerlendirme KriteriMySQL InnoDB ClusterSetPostgreSQL Patroni Standby ClusterPostgreSQL Mantıksal Afet KurtarmaGalera ve Asenkron Afet Kurtarma
Topoloji yapısıBir yazma ve okuma birincil kümesi ile bir veya daha çok salt okunur ikincil kümeUzak kaynaktan replike olan bir yedek lider ve ona bağlı basamaklı ikincil sunucularYayından seçili verileri alan bağımsız abone sunucu yapısıYerel Galera kümesinden uzaktaki bağımsız hedefe klasik asenkron replikasyon
Bölgeler arası veri bağlantısıYalnızca asenkron bağlantı kullanılır, yarı senkron yöntem desteklenmezGenellikle asenkron fiziksel WAL akışı tercih edilirGenellikle asenkron mantıksal değişiklik akışı işletilirAsenkron ikili günlük akışı kullanılır
Replikasyon kapsamıKümenin tamamını kapsarPostgreSQL kümesinin tamamını kapsarSeçili veri tabanı, tablo, satır veya sütunları kapsarYapılandırılan replikasyon kapsamını içerir
RPO beklentisiReplikasyon gecikmesi kadar veri kaybı riski oluşabilirReplikasyon gecikmesi kadar veri kaybı riski oluşabilirVeri uygulama gecikmesine ve yuva durumuna bağlı olarak değişirReplikasyon gecikmesi kadar veri kaybı riski oluşabilir
Planlı geçiş kolaylığıMySQL Shell aracılığıyla hedef küme eşitlenerek kontrollü geçiş sağlanırOtomasyon adımlarıyla yedek küme birincil çalışma moduna alınırAbonelik, sayaç ve bağlantı rollerinin önceden hazırlanmasını gerektirirHarici orkestrasyon ve işletim prosedürleri gerektirir
Afet anında yük devretmeBilinçli bir yönetici kararıyla başlatılır, otomatik işletilmezBölgeler arasında otomatik tetiklenmez, bağımsız DCS alanları üzerinden manuel terfi planlanırTek komutla çalışan otomatik bir geçiş mekanizması bulunmazYönetici kararı, terfi adımları ve düğüm izolasyonu gerektirir
Karşılaşılabilecek başlıca risklerEski birincil küme izole edilmeden zorunlu geçiş yapılırsa iki taraflı yazma ve ayrışan işlem kimlikleri oluşabilirEski birincil sunucunun yeniden erişime açılması durumunda zaman çizgisi çatışmaları doğabilirŞema uyumsuzlukları, kısıt çatışmaları ve biriken yuvalar nedeniyle disk dolma riski barındırırFiltre uyumsuzlukları, yanlış ana sunucu seçimi ve bölünmüş beyin sendromu görülebilir

MySQL InnoDB ClusterSet mimarisinde temel prensip, kümeler arası iletişimde sürekliliği tutarlılığa önceleyen asenkron modelin kullanılmasıdır. Hedef kümenin geriden gelme ihtimali nedeniyle acil yük devretme süreci otomatik başlatılmaz. Eski birincil küme yeniden erişilebilir duruma geldiğinde öncelikle bu kümenin izole edilmesi sağlanmalı ve ayrışan işlemler dikkatle uzlaştırılmalıdır.

PostgreSQL Patroni Standby Cluster yapısında ise uzak lokasyonda bir yedek lider belirlenir. Bu yedek lider, ana kümeden aldığı WAL kayıtlarını yerel ikincil sunuculara dağıtır. Ana küme ile yedek kümenin aynı DCS etki alanını paylaşmaması gerekir. Yedek bölgenin kendi içindeki lider değişimleri otomatik gerçekleşirken, tüm lokasyonun ana yazma merkezine dönüştürülmesi ve eski merkezin izole edilmesi süreci kontrollü bir afet tatbikatı adımı olarak yürütülür.

6. Farklı iş senaryolarına uygun mimari tercihler

İş yükünün niteliği, bütçe ve bakım yetenekleri en uygun veri tabanı mimarisinin belirlenmesinde temel kriterlerdir.

Kurumsal İhtiyaçÖnerilen MimariTercih Nedeni ve Dikkat Noktası
Basit okuma ölçekleme veya düşük maliyetli afet kurtarmaMySQL Asenkron veya PostgreSQL Fiziksel Asenkron Replikasyonİşlem onay gecikmesini en aza indirir, veri kaybı toleransı replikasyon gecikmesine bağlıdır ve otomatik yük devretme için ek orkestrasyon gerektirir
Aynı veri merkezinde minimum veri kaybıMySQL Yarı Senkron veya PostgreSQL Fiziksel Senkron ile PatroniAğ gidiş dönüş gecikmesini dengelerken güncel yedek sunucu seçimini güvenceye alır
MySQL için üreticinin kendi bütünleşik yüksek erişilebilirlik çözümüMySQL InnoDB ClusterGroup Replication, AdminAPI ve Router bileşenlerini tek bir çatı altında uyumla çalıştırır
MySQL ve MariaDB uyumlu çok birincilli mimariPercona XtraDB Cluster veya MariaDB GaleraEşzamanlı yazma gereksinimlerini karşılarken yeniden deneme, akış kontrolü ve durum aktarım süreçlerinin test edilmesini zorunlu kılar
PostgreSQL için kararlı tek birincilli yüksek erişilebilirlikPostgreSQL, Patroni, DCS ve Vekil Sunucu MimarisiSektörde kabul görmüş esnek bir yapı sunarken bileşenlerin bağımsız olarak yönetilmesine imkan tanır
Seçici veri dağıtımı veya ana sürüm yükseltmePostgreSQL Mantıksal ReplikasyonŞema, sayaç ve yuva yönetimini içeren kapsamlı geçiş prosedürleriyle kesintisiz veri göçü sağlar
Çok bölgeli aktif-aktif PostgreSQL gereksinimiEDB Postgres Distributed veya Uygulama Düzeyinde BölümlemeÇakışma yönetimi politikalarını mimarinin merkezine yerleştirerek coğrafi süreklilik sağlar
Konteyner ve Kubernetes ortamlarında yüksek erişilebilirlikCloudNativePG veya Percona Veri Tabanı OperatörleriDağıtım ve yaşam döngüsünü otomatikleştirirken temel replikasyon kurallarını eksiksiz uygular

PostgreSQL ekosisteminde Patroni çözümüne alternatif olarak repmgr veya pg_auto_failover gibi araçlar ve çeşitli Kubernetes operatörleri de değerlendirilebilir. Bu araçlar arasında seçim yaparken yalnızca otomatik yük devretme yeteneğine odaklanılmamalıdır. Düğüm izolasyonu (fencing), topoloji yönetimi, yedekleme entegrasyonu, sürüm yükseltme kolaylığı ve ekibin operasyonel yetkinliği bir bütün olarak ele alınmalıdır.

7. Yüksek erişilebilirlik mimarilerinde uygulanması gereken test senaryoları

Teorik ürün vaatlerine güvenmek yerine üretim iş yükünü yansıtan simülasyonlarla sistem davranışlarını ölçümlemek gerekir.

Mimari tercihleri doğrulamak amacıyla aşağıdaki test senaryoları uygulanmalıdır:

Test SenaryosuÖlçülen Kritik Sonuç
Birincil sunucu sürecini sonlandırmaArıza algılama, yedek sunucunun terfisi ve uygulamanın yeniden bağlanması dahil gerçek kurtarma süresi (RTO)
Birincil sunucuyu ağdan izole etmeÇoğunluk kararı, düğüm izolasyonu ve bölünmüş beyin sendromunun engellenmesi
İkincil sunucu ağını yavaşlatmaİşlem gecikmesi dağılımı (p95 ve p99), replikasyon gecikmesi ve günlük birikimi
Senkron onay düğümünü devre dışı bırakmaYazma işlemlerinin duraklaması, asenkron moda geçiş ve yeni senkron aday belirleme süreci
Büyük hacimli işlem ve şema değişikliğiSertifikasyon süresi, veri işleme gecikmesi, kilitlenme ve yeniden deneme etkileri
Eski birincil sunucuyu sisteme dahil etmeKümeye yeniden katılma, zaman çizgisini geri sarma ve ayrışan işlemlerin yönetimi
Coğrafi afet kurtarma tatbikatıGerçek veri kaybı (RPO), alan adı ve vekil sunucu yönlendirmeleri ile geri dönüş senaryosu (rollback) başarımı

Test süreçlerinde işlem gecikmesi dağılımları (p95 ve p99), replikasyon gecikmesinin bayt ve zaman karşılığı, veri işleme hızı, hata ve yeniden deneme oranları, yük devretme süreleri ve olası veri kayıpları titizlikle kayıt altına alınmalıdır.

Değerlendirme ve mimari seçim ilkeleri

Doğru yüksek erişilebilirlik mimarisi, düzenli test edilen yedekleme ve kurtarma süreçleriyle birleştiğinde gerçek iş sürekliliği sağlar.

MySQL ve PostgreSQL ekosistemlerini doğrudan bire bir özellik listeleriyle karşılaştırmak yerine katman bazlı bir yaklaşımla ele almak gerekir. Replikasyon düzeyinde MySQL asenkron veya yarı senkron modelleri ile PostgreSQL fiziksel akış replikasyonu değerlendirilirken, yüksek erişilebilirlik katmanında MySQL InnoDB Cluster ile PostgreSQL Patroni mimarileri karşılaştırılmalıdır. Afet kurtarma tarafında MySQL InnoDB ClusterSet ile Patroni Standby Cluster yapıları öne çıkar. PXC ve MariaDB Galera gibi çok birincilli modeller ise PostgreSQL yerleşik mantıksal replikasyonuyla değil, gelişmiş çakışma yönetimi sunan PGD benzeri kurumsal çözümlerle kıyaslanmalıdır.

Mimari tasarım sürecinde öncelikle hedeflenen kurtarma noktası (RPO), hedeflenen kurtarma süresi (RTO) ve kabul edilebilir işlem gecikmesi sınırları netleştirilmelidir. Ardından sistemin tek merkezden mi yoksa çoklu yazarlarla mı çalışacağı belirlenmelidir. Nihai aşamada replikasyon altyapısı, orkestrasyon araçları, trafik yönlendirme, düğüm izolasyonu ve yedekleme bileşenleri birbirini tamamlayan bir bütün olarak tasarlanmalıdır. Replikasyon mekanizmaları kullanıcı hatalarını ve mantıksal bozulmaları tüm kopyalara hızla taşıyabildiği için, yüksek erişilebilirlik ve afet kurtarma mimarileri düzenli olarak geri yükleme (restore) testleri gerçekleştirilen yedekleme stratejileriyle desteklenmelidir.

Kaynaklar