MySQL Galera Cluster ile Yüksek Erişilebilir Multi-Master Replikasyon Stratejileri
Veritabanı altyapılarında kesintisiz operasyon ve yüksek veri bütünlüğü, kritik iş yükleri için temel gereksinimlerdir. MySQL Galera Cluster, bu ihtiyaçları multi-master senaryolarıyla karşılayan güçlü bir çözümdür. Geleneksel MySQL replikasyon mekanizmalarının aksine, Galera Cluster senkron replikasyon sunar ve tüm düğümlere aynı anda yazma yeteneği sağlar.
MySQL Galera Cluster Mimarisi ve Senkronizasyon Prensipleri
Galera Cluster, dağıtık bir veritabanı sistemi değildir; aslında MySQL sunucularının bir araya geldiği, sertifikasyon tabanlı bir replikasyon katmanı kullanır. Her düğüm, MySQL sunucusunun kendi tam bir kopyasını barındırır. Temel çalışma prensibi şunlara dayanır:
- Write-Set Replikasyon (WSR): Bir istemci tarafından bir düğüme gönderilen her işlem (transaction), veritabanında yaptığı değişiklikleri içeren bir “write-set” oluşturur. Bu write-set, işlem commit edilmeden önce kümedeki tüm diğer düğümlere gönderilir.
- Senkron Replikasyon ve Sertifikasyon: Her düğüm, aldığı write-set'i kendi işlem kuyruğuna alır ve tutarlılık kontrollerinden geçirir. Eğer write-set, o anki veritabanı durumuna göre uygulanabilir ve herhangi bir çakışma (conflict) yoksa, işlem sertifikalandırılır ve tüm düğümler bu sertifikayı onayladıktan sonra commit edilir. Bu sayede, kümedeki tüm düğümlerin her zaman tutarlı bir veri durumuna sahip olması sağlanır. Çakışma durumunda (örneğin, iki farklı düğüme aynı anda aynı satırı güncelleyen işlem gelirse), yalnızca bir işlem sertifikasyonu geçer ve diğer işlem geri alınır (rollback).
- Global Transaction ID (GTID) Benzeri Mekanizma: Galera, her write-set için benzersiz bir sıra numarası kullanır. Bu, düğümlerin hangi işlemlerin uygulandığını ve hangi işlemlerin eksik olduğunu hızlıca belirlemesine olanak tanır.
- Flow Control: Kümedeki bir düğümün diğerlerine göre geride kalmasını önlemek için bir akış kontrol mekanizması vardır. Eğer bir düğüm yeterince hızlı senkronize olamazsa, küme geneline uygulanan işlemleri geçici olarak duraklatabilir, bu da performans darboğazlarına yol açabilir ancak veri tutarlılığını korur.
Kurulum ve Temel Yapılandırma Adımları
Galera Cluster kurulumu, standart MySQL kurulumuna ek olarak Galera sağlayıcısının entegrasyonunu gerektirir. Burada 3 düğümlü bir CentOS 7/8 ortamı için tipik bir kurulum adımlarını ele alalım.
Ön Gereksinimler
- Her düğümde MySQL uyumlu Galera sunucusunun kurulu olması.
- Tüm düğümler arasında ağ erişimi (varsayılan Galera portları TCP 4567, 4568, 4444).
- Her düğüm için statik IP adresi ve benzersiz bir ana bilgisayar adı.
xtrabackup(Percona XtraBackup) SST (State Snapshot Transfer) yöntemi için genellikle önerilir.
Depoların Eklenmesi ve Kurulum
# CentOS/RHEL için Percona deposunu ekle (Galera genellikle Percona dağıtımı ile tercih edilir)yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpmpercona-release enable-only pxc-80# MySQL/Percona XtraDB Cluster ve xtrabackup kurulumuyum install percona-xtradb-cluster percona-xtrabackup-80 -yYapılandırma Dosyası (my.cnf)
Her düğümde /etc/my.cnf veya /etc/percona-xtradb-cluster.conf.d/wsrep.cnf gibi bir dosyaya aşağıdaki yapılandırmayı ekleyin. IP adreslerini ve isimleri kendi ortamınıza göre güncelleyin.
[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid# Galera Providerwsrep_on=ONwsrep_provider=/usr/lib64/galera4/libgalera_smm.so# Cluster Adresi (tüm düğümlerin IP'leri veya DNS isimleri)wsrep_cluster_address=