MySQL Galera Cluster ile Yüksek Erişilebilirlik ve Multi-Master Replikasyon

 · 

MySQL Galera Cluster ile Yüksek Erişilebilirlik ve Multi-Master Replikasyon

MySQL Galera Cluster ile Yüksek Erişilebilirlik ve Multi-Master Replikasyon

Dağıtık sistemlerde veritabanı tutarlılığı ve kesintisiz erişim, kritik öneme sahiptir. MySQL Galera Cluster, geleneksel tek-master replikasyon modellerinin kısıtlamalarını aşarak, senkron multi-master bir çözüm sunar. Bu mimari, her bir düğümün hem okuma hem de yazma işlemleri için kullanılabilmesini sağlayarak, yüksek erişilebilirlik (High Availability) ve yatay ölçeklenebilirlik (Horizontal Scalability) hedeflerine ulaşmada kilit bir rol oynar.

Galera Cluster Temelleri ve Senkron Replikasyon

Galera, MySQL (ve türevleri olan Percona XtraDB Cluster, MariaDB Cluster) için bir eklenti olarak çalışır ve temelde sertifikasyon tabanlı replikasyon protokolünü kullanır. Bu yaklaşım, bir işlemin (transaction) commit edilmeden önce cluster'daki tüm düğümler tarafından onaylanmasını gerektirir. Geleneksel MySQL replikasyonunda yaşanan veri tutarsızlığı veya replikasyon gecikmesi sorunları, Galera'nın senkron doğası sayesinde ortadan kalkar.

Her bir işlem, bir "write-set" olarak paketlenir ve cluster'daki diğer düğümlere dağıtılır. Düğümler, bu write-set'i kendi yerel veritabanlarına uygulamadan önce, çakışma olup olmadığını kontrol eder. Eğer bir çakışma yoksa, işlem onaylanır ve commit edilir. Bu sertifikasyon süreci, Total Order Global Transaction ID (TOI) mekanizması ile sağlanır, böylece tüm düğümlerin veritabanı durumları mantıksal olarak aynı sıraya göre güncellenir.

Galera Mimarisi ve Bileşenleri

Galera Cluster, dağıtılmış bir mimariye sahiptir ve herhangi bir tek hata noktasını (Single Point of Failure - SPoF) ortadan kaldırır. Temel bileşenleri şunlardır:

  • WSREP API (Write-Set Replication API): MySQL sunucusunun Galera replikasyon protokolü ile iletişim kurmasını sağlayan arayüz.
  • Galera Replication Plugin (gcomm): Düğümler arası iletişim, mesajlaşma ve grup üyeliği yönetimini sağlar.
  • State Transfer (SST/IST): Yeni bir düğümün cluster'a katılması veya mevcut bir düğümün yeniden senkronize olması gerektiğinde veri senkronizasyonunu yönetir. SST (State Snapshot Transfer) tüm verinin kopyalanmasını içerirken, IST (Incremental State Transfer) sadece eksik write-set'lerin transferini sağlar.
  • Quorum ve Primary Component: Cluster'ın operasyonel kalması için düğümlerin çoğunluğunun (quorum) aktif ve birbirleriyle iletişim halinde olması gerekir. Eğer bir ağ bölümlemesi (network partition) yaşanırsa, düğüm çoğunluğuna sahip olan taraf "primary component" olarak belirlenir ve çalışmaya devam eder.

Tipik bir Galera yapılandırması, her bir düğümün my.cnf dosyasında aşağıdaki gibi parametreler içerir:

[mysqld]...wsrep_on=ONwsrep_provider=/usr/lib/galera/libgalera_smm.sowsrep_cluster_address="gcomm://192.168.1.10,192.168.1.11,192.168.1.12"wsrep_cluster_name="my_galera_cluster"wsrep_node_address="192.168.1.10"wsrep_node_name="galera_node_1"wsrep_sst_method=rsyncwsrep_sst_auth="sst_user:sst_password"binlog_format=ROWdefault_storage_engine=InnoDBinnodb_autoinc_lock_mode=2

Yukarıdaki örnekte, wsrep_cluster_address diğer düğümlerin IP'lerini belirtir. wsrep_node_address ise o anki düğümün kendi IP'sidir. wsrep_sst_method, yeni düğümlerin mevcut cluster'a nasıl katılacağını belirler. rsync popüler bir seçenektir, ancak Percona XtraDB Cluster'da xtrabackup daha performanslı ve kesintisiz SST için tercih edilir.

Multi-Master Yetenekleri ve Üretim Ortamı Senaryoları

Galera'nın en güçlü özelliği, tüm düğümlerin aktif olarak yazma işlemlerini kabul edebilmesidir. Bu, okuma ve yazma yükünü cluster'daki tüm düğümlere dağıtma potansiyeli sunar. Geleneksel MySQL replikasyonunda, yazma işlemleri sadece ana (master) sunucuda gerçekleşirken, Galera'da herhangi bir düğüm üzerinden yazma işlemi başlatılabilir.

Gerçek Senaryo: Yüksek Trafikli E-Ticaret Platformu

Büyük bir e-ticaret sitesi düşünelim. Sipariş alma, envanter güncelleme, kullanıcı profili işlemleri gibi birçok yazma ağırlıklı operasyon, günün belirli saatlerinde pik yapar. Geleneksel master-slave replikasyonunda, master sunucusu darboğaza girebilirken, slave'ler sadece okuma yükünü hafifletebilir. Galera Cluster ile, üç adet veritabanı düğümü olan bir mimaride (node-1, node-2, node-3), uygulama sunucuları yük dengeleyici (load balancer) arkasından tüm düğümlere bağlanabilir. Bu sayede:

  • Yazma işlemleri node-1'den, envanter güncellemeleri node-2'den, kullanıcı profili işlemleri node-3'ten yapılabilir.
  • Bir düğüm çevrimdışı kaldığında (bakım, donanım arızası), diğer düğümler otomatik olarak hizmet vermeye devam eder, böylece sıfıra yakın kesinti süresi (Near-Zero Downtime) sağlanır.
  • Yeni bir düğüm eklemek, kapasiteyi kolayca artırmak anlamına gelir; bu düğüm otomatik olarak cluster'a katılır ve mevcut veriyi senkronize eder.

Bu senaryoda, uygulamanın veritabanı bağlantı havuzları, birden fazla Galera düğümüne işaret edecek şekilde yapılandırılır. Bir düğümün çökmesi durumunda, uygulama otomatik olarak diğer aktif düğümlere yönlendirilir. Galera'nın senkron yapısı, sipariş verisinin anında tüm düğümlere yayılmasını garantiler, bu da stok tutarlılığı gibi kritik işlevler için hayati öneme sahiptir.

Üretim Ortamında Dikkat Edilmesi Gerekenler ve Optimizasyon

Galera'nın sağladığı avantajlar kadar, üretim ortamında uygulanırken bazı özel dikkat noktaları vardır:

  • Ağ Gecikmesi (Network Latency): Senkron replikasyon, düğümler arasındaki ağ gecikmesine karşı hassastır. Düğümler arası gecikme arttıkça, işlem onay süreleri uzar ve genel veritabanı performansı düşer. Bu nedenle, Galera düğümleri genellikle aynı veri merkezi veya yakın coğrafi bölgelerde konumlandırılır. WAN üzerinden senkronizasyon, özel optimizasyonlar veya daha gevşek tutarlılık modelleri gerektirebilir.
  • Büyük İşlemler (Large Transactions): Çok büyük boyutlu işlemler (örneğin, milyonlarca satırı güncelleyen toplu işlemler), Galera'nın write-set boyutunu artırır ve cluster üzerindeki yükü yükseltir. Bu tür işlemler, diğer işlemlerin bloke olmasına ve performans düşüşüne yol açabilir. Mümkünse, büyük işlemler daha küçük parçalara bölünmelidir.
  • Primary Key Optimizasyonu: Tüm tabloların birincil anahtara sahip olması önerilir. Galera, write-set'leri uygularken birincil anahtarları kullanarak satırları tanımlar. Birincil anahtar eksikliği, tüm tablo taramasına neden olabilir ve performansı ciddi şekilde etkiler.
  • Deadlock Yönetimi: Multi-master ortamda, farklı düğümlerde eşzamanlı olarak aynı satırlar üzerinde yazma işlemi başlatıldığında deadlock (kilitlenme) olasılığı artar. Galera, bu tür çakışmaları optimistik kilitlenme kontrolü (optimistic locking) ile yönetir ve çakışan işlemlerden birini geri alır (rollback). Uygulamanın bu geri dönüşleri ele alacak şekilde tasarlanması gerekir (örneğin, işlemi tekrar deneme mekanizması).
  • SST/IST Ayarları: Özellikle büyük veritabanlarında, yeni bir düğümün cluster'a katılması için gereken SST süresi uzun olabilir. xtrabackup gibi daha hızlı SST yöntemlerini kullanmak ve wsrep_sst_donor parametresiyle belirli bir düğümü SST kaynağı olarak atamak, bu süreyi optimize edebilir.

Bir Galera Cluster'ın durumunu kontrol etmek için aşağıdaki gibi komutlar kullanılabilir:

-- Herhangi bir düğümde:SHOW STATUS LIKE 'wsrep_%';-- Cluster boyutu ve düğüm durumuSHOW STATUS LIKE 'wsrep_cluster_size';SHOW STATUS LIKE 'wsrep_local_state_comment'; -- Joining, Synced, Donor

Bu komutlar, cluster'ın genel sağlığı, kaç düğümün senkronize olduğu ve her bir düğümün mevcut durumu hakkında bilgi verir.

Sonuç

MySQL Galera Cluster, yüksek erişilebilirlik ve yatay yazma ölçeklenebilirliği arayan modern uygulamalar için güçlü bir çözümdür. Senkron multi-master replikasyon yeteneği, veri tutarlılığını garanti ederken, tek hata noktasını ortadan kaldırır. Ancak bu güç, ağ topolojisi, işlem boyutları ve uygulama tasarımı gibi faktörlere dikkat edilerek dengeli bir şekilde kullanılmalıdır. Doğru yapılandırma ve izleme ile Galera, kritik iş yükleri için sağlam ve performanslı bir veritabanı altyapısı sunabilir.

← Blog Listesine Dön