Galera Cluster’ı MySQL 5.6 ile Ubuntu 16.04 Üzerinde Yapılandırma Rehberi
Giriş
Günümüzün hızla değişen dijital dünyasında, veritabanı sistemlerinin yüksek erişilebilirlik (High Availability – HA) ve felaket kurtarma (Disaster Recovery) yetenekleri kritik öneme sahiptir. Tek bir veritabanı sunucusunun arızalanması, tüm uygulamaların ve hizmetlerin durmasına neden olabilir. Bu tür senaryoları engellemek için kümeleme (clustering) çözümleri devreye girer. Galera Cluster, MySQL (veya türevleri) için senkron replikasyon sağlayan, çok ana (multi-master) bir kümeleme çözümüdür. Bu sayede, kümedeki tüm düğümler aynı anda yazma ve okuma işlemleri yapabilir ve bir düğümün çökmesi durumunda bile hizmet kesintisi yaşanmaz.
Bu teknik makalede, MySQL 5.6 veritabanı sunucusunu Ubuntu 16.04 işletim sistemi üzerinde Galera Cluster ile nasıl yapılandıracağımızı adım adım inceleyeceğiz. Her ne kadar MySQL 5.6 ve Ubuntu 16.04 güncel sürümler olmasa da, belirli projeler veya eski sistemlerle uyumluluk gereksinimleri nedeniyle bu kombinasyonun hala kullanılması gerekebilir. Bu rehber, bu özel ortamda sağlam ve yüksek erişilebilir bir veritabanı altyapısı kurmak isteyen sistem yöneticileri ve geliştiriciler için detaylı bir yol haritası sunmaktadır. Galera’nın senkron replikasyon mimarisi, veri tutarlılığını garanti ederken, çok ana yapısı sayesinde yük dengeleme ve ölçeklenebilirlik potansiyeli sunar. Kurulum süreci, gerekli paketlerin yüklenmesinden, MySQL ve Galera yapılandırmasına, kümenin başlatılmasına ve durumunun kontrol edilmesine kadar tüm adımları kapsayacaktır.
Ön Gereksinimler
Galera Cluster kurulumuna başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olmalısınız:
* En Az Üç Sunucu: Galera Cluster, quorum (çoğunluk) mekanizması ile çalıştığı için, arıza toleransı ve bölünmüş beyin (split-brain) senaryolarını önlemek amacıyla tek sayıda düğümle (node) çalışması şiddetle tavsiye edilir. Bu nedenle, en az üç adet Ubuntu 16.04 sunucusuna ihtiyacınız olacaktır. Sunucular fiziksel, sanal veya bulut tabanlı olabilir. Bu rehberde node1, node2 ve node3 olarak adlandırılacaklardır.
* Ubuntu 16.04 İşletim Sistemi: Tüm düğümlerin Ubuntu 16.04 (Xenial Xerus) işletim sistemine sahip olması gerekmektedir.
* Root veya Sudo Yetkileri: Kurulum ve yapılandırma işlemleri için tüm sunucularda root erişimine veya sudo yetkisine sahip bir kullanıcıya ihtiyacınız olacaktır.
* Ağ Bağlantısı: Tüm düğümler arasında kesintisiz ve güvenli bir ağ bağlantısı olmalıdır. Galera Cluster, düğümler arası iletişim için belirli portları kullanır.
* Statik IP Adresleri: Her düğüm için statik bir IP adresi atanması önerilir. Bu, küme yapılandırmasını daha kararlı hale getirecektir. Örneğin:
* node1: 192.168.1.101
* node2: 192.168.1.102
* node3: 192.168.1.103
* Temel Linux Bilgisi: Komut satırı kullanımı, dosya düzenleme ve servis yönetimi gibi temel Linux bilgisine sahip olmak önemlidir.
* Güvenlik Duvarı (Firewall) Ayarları: Güvenlik duvarı kullanılıyorsa, Galera Cluster’ın ihtiyaç duyduğu portların açık olduğundan emin olunmalıdır. Bu portlar şunlardır:
* 3306/tcp: MySQL istemci bağlantıları için.
* 4444/tcp: Durum Aktarımı (State Snapshot Transfer – SST) için (örneğin rsync veya xtrabackup).
* 4567/tcp: Galera Cluster çoğaltma trafiği için (unicast ve multicast).
* 4568/tcp: Durum Aktarımı (IST) için.
Bu gereksinimler karşılandıktan sonra, Galera Cluster kurulumuna geçebiliriz.
Adım 1: Sistem Güncelleme ve Gerekli Paketlerin Kurulumu
Herhangi bir yazılım kurulumuna başlamadan önce, işletim sistemi paketlerinin güncel olduğundan emin olmak iyi bir uygulamadır. Bu, güvenlik açıklarını kapatır ve bağımlılık sorunlarını önler. Ayrıca, Galera ve MySQL depolarını eklemek için bazı temel paketlere ihtiyacımız olacak.
Tüm düğümlerde aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt upgrade -y
Bu komutlar, sistemdeki paket listesini günceller ve mevcut tüm paketleri en son sürümlerine yükseltir. Ardından, MySQL ve Galera depolarını eklemek için gerekli olan software-properties-common, dirmngr ve apt-transport-https paketlerini kuralım:
sudo apt install -y software-properties-common dirmngr apt-transport-https
* software-properties-common: Depo ekleme gibi işlemler için yardımcı programlar sağlar.
* dirmngr: GPG anahtarlarını yönetmek için kullanılır.
* apt-transport-https: HTTPS üzerinden depoları kullanabilmek için gereklidir.
Bu adımlar, sisteminizi MySQL ve Galera Cluster kurulumuna hazırlar.
Adım 2: MySQL 5.6 ve Galera Depolarının Eklemesi
Ubuntu 16.04’ün varsayılan depolarında MySQL 5.6 veya Galera Cluster’ın güncel sürümleri bulunmayabilir. Bu nedenle, Codership (Galera’nın geliştiricisi) tarafından sağlanan özel depoları eklememiz gerekmektedir. Bu depolar, MySQL’in WSREP (Write Set Replication) yamalı sürümünü ve Galera kütüphanelerini içerir.
Tüm düğümlerde aşağıdaki adımları uygulayın:
Öncelikle, Codership GPG anahtarını sisteminize eklememiz gerekiyor. Bu anahtar, depodan indirilecek paketlerin doğruluğunu sağlamak için kullanılır:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BC19DDBA
Bu komut, Codership’ın genel anahtarını Ubuntu’nun anahtar sunucusundan alır ve yerel anahtar halkasına ekler. Anahtar eklendikten sonra, Codership’ın MySQL 5.6 (WSREP özellikli) ve Galera 3 için deposunu sources.list.d dizinine eklememiz gerekiyor:
sudo add-apt-repository 'deb http://releases.galeracluster.com/mysql-wsrep-5.6/ubuntu xenial main'
Bu komut, http://releases.galeracluster.com/mysql-wsrep-5.6/ubuntu adresindeki depoyu Ubuntu 16.04 (xenial) sisteminize ekler. main kısmı, depodaki ana paketleri ifade eder.
Depo eklendikten sonra, sisteminizin yeni depoyu tanıması için paket listesini tekrar güncellemeniz gerekmektedir:
sudo apt update
Artık sisteminiz, MySQL 5.6’nın WSREP yamalı sürümünü ve Galera Cluster bileşenlerini bu depodan indirebilir ve kurabilir. Bu adım, küme için doğru MySQL sürümünü ve Galera kütüphanelerini edinmenin temelini oluşturur.
Adım 3: MySQL WSREP Server ve Galera Paketlerinin Kurulumu
Depoları ekledikten ve güncelledikten sonra, artık MySQL WSREP sunucusunu ve Galera Cluster paketlerini kurabiliriz. Bu adım, veritabanı sunucusunun kendisini ve Galera replikasyon motorunu sisteminize yükleyecektir.
Tüm düğümlerde aşağıdaki komutu çalıştırın:
sudo apt install -y mysql-wsrep-server-5.6 mysql-wsrep-client-5.6 galera-3
* mysql-wsrep-server-5.6: Galera Cluster ile uyumlu, MySQL 5.6 sunucusudur. wsrep ön eki, Galera entegrasyonuna sahip olduğunu gösterir.
* mysql-wsrep-client-5.6: MySQL sunucusuna bağlanmak için gerekli olan istemci araçlarını içerir.
* galera-3: Galera Cluster’ın temel kütüphanelerini ve araçlarını içerir.
Kurulum sırasında, MySQL root kullanıcısı için bir parola belirlemeniz istenebilir. Güçlü bir parola belirlediğinizden ve güvenli bir yerde sakladığınızdan emin olun.
Kurulum tamamlandıktan sonra, MySQL servisi otomatik olarak başlayabilir. Galera yapılandırmasına geçmeden önce, servisi durdurmamız gerekmektedir, çünkü mevcut yapılandırma Galera için uygun olmayacaktır.
sudo systemctl stop mysql
veya eski init sistemlerinde:
sudo service mysql stop
MySQL servisi durdurulduktan sonra, Galera Cluster için özel yapılandırmaları yapmaya hazırız.
Adım 4: MySQL Yapılandırması
Galera Cluster’ın düzgün çalışabilmesi için MySQL yapılandırma dosyasında (my.cnf) bazı özel ayarların yapılması gerekmektedir. Bu ayarlar, Galera replikasyon motorunu etkinleştirir, küme üyelerini tanımlar ve replikasyon davranışını kontrol eder.
Yapılandırma dosyası genellikle /etc/mysql/my.cnf veya /etc/mysql/mysql.conf.d/mysqld.cnf konumunda bulunur. Galera’ya özel ayarları ayrı bir dosyada tutmak daha düzenli bir yaklaşım olabilir. Bunun için /etc/mysql/conf.d/galera.cnf adında yeni bir dosya oluşturabiliriz.
Tüm düğümlerde /etc/mysql/conf.d/galera.cnf dosyasını oluşturun veya mevcut my.cnf dosyanızı düzenleyin ve aşağıdaki içeriği ekleyin. Her düğüm için wsrep_node_name ve wsrep_node_address parametrelerini kendi IP adresi ve adıyla güncellemeyi unutmayın.
# /etc/mysql/conf.d/galera.cnf
[mysqld]
Genel MySQL Ayarları
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
log-error=/var/log/mysql/error.log
pid-file=/var/run/mysqld/mysqld.pid
InnoDB Ayarları (Galera için kritik)
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2 # Galera için önerilir
innodb_flush_log_at_trx_commit=0 # Performans için (veri kaybı riski ile)
innodb_buffer_pool_size=1G # Sunucunun RAM'ine göre ayarlanmalı
query_cache_size=0 # Galera ile uyumsuzluk nedeniyle kapatılmalı
query_cache_type=0
Bağlantı Ayarları
bind-address=0.0.0.0 # Tüm ağ arayüzlerinden bağlantıya izin verir
Veya belirli bir IP adresi: bind-address=192.168.1.101
Replikasyon Ayarları
binlog_format=ROW # Galera için zorunlu
log_bin=mysql-bin # Binary log'ları etkinleştir (isteğe bağlı ama iyi bir uygulama)
server_id=1 # Her düğüm için benzersiz olmalı (1, 2, 3 vb.)
Galera Cluster Ayarları
wsrep_on=ON
wsrep_provider=/usr/lib/galera-3/libgalera_smm.so # Galera kütüphanesinin yolu
Küme Üyelerini Belirleme (Tüm düğümlerin IP adresleri)
Bu liste, bir düğümün küme üyelerini bulmasını sağlar.
İlk düğüm için "gcomm://" boş bırakılabilir veya sadece kendi IP'si olabilir.
wsrep_cluster_address="gcomm://192.168.1.101,192.168.1.102,192.168.1.103"
Küme Adı (Tüm düğümler aynı olmalı)
wsrep_cluster_name="my_galera_cluster"
Düğüm Adı ve Adresi (Her düğüm için benzersiz olmalı)
wsrep_node_name="node1" # Örneğin: node1, node2, node3
wsrep_node_address="192.168.1.101" # Düğümün kendi IP adresi
Durum Aktarımı (State Snapshot Transfer - SST) Ayarları
Yeni bir düğüm kümeye katıldığında veya bir düğüm yeniden başlatıldığında
verilerin senkronize edilmesi için kullanılır.
wsrep_sst_method=rsync # xtrabackup-v2 daha hızlı ve güvenilir olabilir, ancak Percona XtraBackup gerektirir.
wsrep_sst_auth="sst_user:sst_password" # SST için kullanılacak kullanıcı adı ve parola
Olası ek ayarlar (performans veya güvenlik için)
wsrep_slave_threads=4 # Çoğaltma için kullanılacak iş parçacığı sayısı (CPU çekirdek sayısına göre ayarlanmalı)
wsrep_provider_options="pc.recovery=TRUE; gcache.size=128M"
Parametre Açıklamaları:
* datadir, socket, log-error, pid-file: MySQL’in standart dosya yolları.
* default_storage_engine=InnoDB: Galera sadece InnoDB depolama motorunu destekler.
* innodb_autoinc_lock_mode=2: Otomatik artan (auto-increment) değerlerin Galera’da doğru çalışması için gereklidir.
* query_cache_size=0, query_cache_type=0: Sorgu önbelleği Galera ile uyumlu değildir ve kapatılmalıdır.
* bind-address=0.0.0.0: MySQL’in tüm ağ arayüzlerinden bağlantıları kabul etmesini sağlar. Güvenlik açısından belirli bir IP adresine bağlamak daha iyi olabilir.
* binlog_format=ROW: Galera için zorunlu olan satır tabanlı binary log formatı.
* server_id: Her MySQL sunucusunun benzersiz bir kimliği olmalıdır.
* wsrep_on=ON: Galera replikasyonunu etkinleştirir.
* wsrep_provider: Galera kütüphanesinin tam yolu. Ubuntu 16.04 ve Galera 3 için bu yol /usr/lib/galera-3/libgalera_smm.so olmalıdır.
* wsrep_cluster_address: Kümedeki diğer düğümlerin IP adreslerini içerir. Bir düğüm kümeye katıldığında, bu adresleri kullanarak diğer düğümleri bulmaya çalışır. İlk düğüm başlatılırken bu parametre boş bırakılabilir (gcomm://) veya sadece kendi IP’si olabilir. Ancak, sonraki düğümlerin ilk düğümü bulabilmesi için bu parametrenin dolu olması önemlidir.
* wsrep_cluster_name: Kümenin adı. Tüm düğümlerde aynı olmalıdır.
* wsrep_node_name: Düğümün benzersiz adı.
* wsrep_node_address: Düğümün kendi IP adresi.
* wsrep_sst_method: Durum Aktarımı için kullanılacak yöntem. rsync basit bir seçenektir, ancak büyük veritabanları için xtrabackup-v2 (Percona XtraBackup gerektirir) daha hızlı ve daha az kesintili olabilir. Bu rehberde rsync kullanılacaktır.
* wsrep_sst_auth: SST işlemi sırasında kullanılacak kullanıcı adı ve parola. Bu kullanıcıyı bir sonraki adımda oluşturacağız.
Bu yapılandırma dosyasını her düğüm için kendi IP adresleri ve düğüm adlarıyla güncelledikten sonra kaydedin.
Adım 5: SST Kullanıcısı Oluşturma
wsrep_sst_method parametresinde belirtilen sst_user kullanıcısını oluşturmamız gerekmektedir. Bu kullanıcı, Durum Aktarımı (SST) sırasında veritabanı içeriğini bir düğümden diğerine kopyalamak için kullanılır. Bu kullanıcının belirli ayrıcalıklara sahip olması gerekir.
Bu kullanıcıyı oluşturmak için, ilk düğümü geçici olarak Galera kümesi olmadan başlatmamız gerekecek. Alternatif olarak, küme ilk kez başlatıldıktan sonra da oluşturulabilir. En basit yol, ilk düğümü geçici olarak normal MySQL olarak başlatmaktır.
Sadece ilk düğümde (node1) aşağıdaki adımları uygulayın:
1. Geçici olarak /etc/mysql/conf.d/galera.cnf dosyasındaki tüm wsrep_ ile başlayan satırları yorum satırı yapın veya silin.
2. MySQL servisini başlatın:
sudo systemctl start mysql
3. MySQL’e root olarak bağlanın:
mysql -u root -p
Kurulum sırasında belirlediğiniz root parolasını girin.
4. sst_user kullanıcısını oluşturun ve gerekli ayrıcalıkları verin:
CREATE USER 'sst_user'@'localhost' IDENTIFIED BY 'sst_password';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON . TO 'sst_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Önemli: sst_password yerine güçlü bir parola kullanın ve tüm düğümlerdeki galera.cnf dosyasında bu parolayı güncelleyin.
5. MySQL servisini durdurun:
sudo systemctl stop mysql
6. /etc/mysql/conf.d/galera.cnf dosyasındaki wsrep_ ile başlayan satırları tekrar etkinleştirin (yorum satırlarını kaldırın).
Bu kullanıcı, SST işlemleri sırasında veritabanının kilitlenmesi, tabloların kopyalanması ve replikasyon durumunun alınması için gereklidir. Ayrıcalıkları dikkatli bir şekilde verilmelidir, çünkü bu kullanıcı veritabanı içeriğine erişebilir.
Adım 6: Galera Cluster’ı Başlatma
Tüm düğümlerde MySQL yapılandırması ve SST kullanıcısı hazır olduğuna göre, artık Galera Cluster’ı başlatabiliriz. Kümenin başlatılması, ilk düğümün “bootstrap” edilmesi ve diğer düğümlerin bu kümeye katılması şeklinde iki aşamalıdır.
6.1. İlk Düğümü Başlatma (Bootstrap)
Sadece ilk düğümde (node1), kümenin başlangıç noktasını oluşturmak için özel bir komutla MySQL servisini başlatmanız gerekir. Bu, kümenin ilk üyesini oluşturur ve diğer düğümlerin katılabileceği bir “çekirdek” sağlar.
sudo galera_new_cluster
Veya bazı Galera paketlerinde aşağıdaki komut kullanılabilir:
sudo systemctl start mysql@bootstrap
Veya daha düşük seviye bir komut:
sudo mysqld --wsrep-new-cluster &
galera_new_cluster komutu genellikle tercih edilir, çünkü arka planda gerekli adımları otomatik olarak halleder.
Servisin durumunu kontrol edin:
sudo systemctl status mysql
Çıktıda MySQL servisinin çalıştığını ve herhangi bir hata olmadığını görmelisiniz.
İlk düğüm başarıyla başlatıldıktan sonra, MySQL’e bağlanarak küme durumunu kontrol edebilirsiniz:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
wsrep_cluster_size değeri 1 olmalıdır, bu da kümede şu anda sadece bir düğüm olduğunu gösterir.
6.2. Diğer Düğümleri Kümeye Katma
Şimdi diğer düğümleri (node2 ve node3) kümeye katabiliriz. Bu düğümler, yapılandırma dosyasındaki wsrep_cluster_address parametresini kullanarak ilk düğümü (veya zaten çalışan diğer düğümleri) bulacak ve Durum Aktarımı (SST) işlemi ile verileri senkronize edeceklerdir.
node2 ve node3 üzerinde aşağıdaki adımları uygulayın:
MySQL servisini başlatın:
sudo systemctl start mysql
veya
sudo service mysql start
Servisin başarıyla başladığından emin olmak için logları kontrol etmek iyi bir fikirdir:
tail -f /var/log/mysql/error.log
Bu log dosyasında, düğümün kümeye katılmaya çalıştığını, SST işleminin başladığını ve tamamlandığını gösteren mesajlar görmelisiniz. [Note] WSREP: Member 0 (node1) synced with group. gibi mesajlar arayın.
SST işlemi, veritabanının boyutuna ve ağ hızına bağlı olarak biraz zaman alabilir. İşlem tamamlandığında, düğüm kümeye katılmış ve senkronize olmuş olacaktır.
Adım 7: Cluster Durumunu Kontrol Etme
Tüm düğümler başlatılıp kümeye katıldıktan sonra, kümenin genel durumunu ve her bir düğümün senkronizasyon durumunu kontrol etmek önemlidir.
Herhangi bir düğümde MySQL’e bağlanarak aşağıdaki komutları çalıştırın:
1. Küme Boyutunu Kontrol Etme:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
wsrep_cluster_size değeri 3 olmalıdır (eğer üç düğümünüz varsa). Bu, tüm düğümlerin kümeye başarıyla katıldığını gösterir.
2. Düğümün Senkronizasyon Durumunu Kontrol Etme:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_local_state_comment';"
Bu komutun çıktısı Synced olmalıdır. Bu, düğümün kümedeki diğer tüm düğümlerle tam olarak senkronize olduğunu gösterir. Eğer Donor/Desynced veya başka bir durum görüyorsanız, bir sorun olabilir ve logları kontrol etmeniz gerekir.
3. Replikasyonu Test Etme:
Kümenin multi-master çalıştığını doğrulamak için, bir düğümde bir veritabanı ve tablo oluşturup, diğer düğümlerde bu veritabanının ve tablonun görünüp görünmediğini kontrol edebilirsiniz.
node1 üzerinde:
mysql -u root -p
CREATE DATABASE test_galera;
USE test_galera;
CREATE TABLE my_table (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));
INSERT INTO my_table (name) VALUES ('Test Data from Node1');
EXIT;
node2 veya node3 üzerinde:
mysql -u root -p
USE test_galera;
SELECT * FROM my_table;
EXIT;
Test Data from Node1 kaydını görmelisiniz. Ayrıca, node2 üzerinde yeni bir kayıt ekleyip node1 üzerinde kontrol edebilirsiniz:
node2 üzerinde:
mysql -u root -p
USE test_galera;
INSERT INTO my_table (name) VALUES ('Test Data from Node2');
EXIT;
node1 üzerinde:
mysql -u root -p
USE test_galera;
SELECT * FROM my_table;
EXIT;
Her iki kaydı da görmelisiniz. Bu, senkron replikasyonun başarıyla çalıştığını gösterir.
Adım 8: Yük Dengeleme (İsteğe Bağlı ama Önerilen)
Galera Cluster, çok ana (multi-master) bir yapıya sahip olduğu için, kümedeki tüm düğümler okuma ve yazma işlemleri için kullanılabilir. Ancak, uygulamaların doğrudan belirli bir düğüme bağlanması yerine, gelen veritabanı isteklerini kümedeki düğümlere dağıtmak için bir yük dengeleyici kullanmak, yüksek erişilebilirlik ve performans açısından şiddetle önerilir.
Popüler yük dengeleme çözümleri şunlardır:
* HAProxy: TCP seviyesinde (Layer 4) çalışan, yüksek performanslı bir yük dengeleyicidir. Gelen MySQL bağlantılarını kümedeki sağlıklı düğümlere yönlendirebilir. HAProxy, düğümlerin durumunu kontrol etmek için sağlık kontrolleri yapabilir ve yalnızca aktif olan düğümlere trafik yönlendirebilir.
* MaxScale: MariaDB tarafından geliştirilen, veritabanına özel bir proxy ve yük dengeleyicidir. MySQL protokolünü anlar, okuma/yazma ayırma (read/write splitting) gibi gelişmiş özellikler sunar ve Galera Cluster ile daha derin entegrasyon sağlayabilir.
* ProxySQL: Yüksek performanslı, veritabanı protokolü farkında bir proxy’dir. Gelişmiş yönlendirme kuralları, önbellekleme ve sorgu yeniden yazma gibi özellikler sunar.
Bir yük dengeleyici kullanmak, uygulamanızın tek bir veritabanı düğümünün arızalanmasından etkilenmemesini sağlar. Yük dengeleyici, arızalı düğümleri otomatik olarak havuzdan çıkarır ve trafiği kalan sağlıklı düğümlere yönlendirir. Bu, Galera Cluster’ın sunduğu yüksek erişilebilirliği tam olarak kullanmanızı sağlar.
Bu rehberin kapsamı dışında olsa da, üretim ortamlarında Galera Cluster’ı kullanırken bir yük dengeleyiciyi yapılandırmayı ciddi şekilde düşünmelisiniz.
Sorun Giderme
Galera Cluster kurulumu sırasında veya sonrasında karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:
* Bağlantı Sorunları (Can’t connect to MySQL server):
* Çözüm: MySQL servisinin çalışıp çalışmadığını kontrol edin (sudo systemctl status mysql). bind-address ayarının doğru olduğundan (örneğin 0.0.0.0 veya düğümün IP adresi) ve güvenlik duvarının 3306 portunu engellemediğinden emin olun.
* Küme Başlatılamıyor veya Düğümler Kümeye Katılamıyor:
* Çözüm:
* MySQL hata loglarını kontrol edin (tail -f /var/log/mysql/error.log). Galera’ya özgü hatalar genellikle burada görünür.
* Güvenlik duvarı kurallarını kontrol edin. Galera’nın kullandığı 4444, 4567, 4568 portlarının açık olduğundan emin olun.
* wsrep_cluster_address parametresinin tüm düğümlerde doğru IP adreslerini içerdiğinden emin olun.
* wsrep_node_name ve wsrep_node_address parametrelerinin her düğümde benzersiz ve doğru olduğundan emin olun.
* wsrep_provider yolunun (/usr/lib/galera-3/libgalera_smm.so) doğru olduğundan emin olun.
* SST Hatası (State Snapshot Transfer Failed):
* Çözüm:
* wsrep_sst_auth parametresinde belirtilen sst_user kullanıcısının oluşturulduğundan ve doğru ayrıcalıklara sahip olduğundan emin olun. Parolanın galera.cnf dosyasındakiyle eşleştiğini kontrol edin.
* rsync için, düğümler arasında SSH bağlantısı kurabilen bir rsync kullanıcısı da gerekebilir, ancak Galera’nın dahili rsync yöntemi genellikle sst_user üzerinden çalışır.
* Kaynak düğümün (donor) sağlıklı ve senkronize olduğundan emin olun.
* Düğümün disk alanının yeterli olduğundan emin olun. SST, tüm veritabanının bir kopyasını gerektirir.
* Bölünmüş Beyin (Split-Brain) Senaryoları:
* Çözüm: Bu, kümenin farklı bölümlerinin birbirinden bağımsız olarak çalışmaya devam etmesi durumudur. Genellikle ağ kesintileri nedeniyle oluşur. Galera’nın quorum mekanizması bunu önlemeye çalışır. Tek sayıda düğüm kullanmak (örn. 3, 5) bölünmüş beyin riskini azaltır. Eğer bir bölünmüş beyin oluştuysa, kümenin bir kısmını durdurup, çoğunluğa sahip olan kısmı tekrar başlatarak küme bütünlüğünü sağlamanız gerekebilir.
* Yüksek CPU veya Disk Kullanımı:
* Çözüm: innodb_buffer_pool_size gibi InnoDB ayarlarını sunucunuzun kaynaklarına göre optimize edin. wsrep_slave_threads parametresini CPU çekirdek sayınıza göre ayarlayarak replikasyon performansını artırabilirsiniz.
Sorun giderme sürecinde, sabırlı olmak ve log dosyalarını dikkatlice incelemek çok önemlidir.
Sonuç
Bu kapsamlı rehberde, MySQL 5.6’yı Ubuntu 16.04 işletim sistemi üzerinde Galera Cluster ile nasıl yapılandıracağımızı adım adım inceledik. Yüksek erişilebilirlik ve veri tutarlılığı sağlayan bu multi-master senkron replikasyon çözümü, kritik veritabanı hizmetleri için güçlü bir temel sunar.
Kurulum sürecimiz, sistemin güncellenmesi ve gerekli paketlerin yüklenmesiyle başladı. Ardından, Codership’ın özel depolarını ekleyerek MySQL 5.6’nın WSREP yamalı sürümünü ve Galera kütüphanelerini kurduk. MySQL yapılandırma dosyasında Galera’ya özel parametreleri ayarladık ve Durum Aktarımı (SST) için gerekli olan sst_user kullanıcısını oluşturduk. Son olarak, kümenin ilk düğümünü bootstrap ederek ve diğer düğümleri kümeye katıp senkronizasyon durumlarını kontrol ederek kurulumu tamamladık.
Galera Cluster’ın sunduğu başlıca avantajlar şunlardır:
* Yüksek Erişilebilirlik: Bir düğümün arızalanması durumunda bile hizmet kesintisi yaşanmaz, çünkü diğer düğümler çalışmaya devam eder.
* Sıfır Veri Kaybı: Senkron replikasyon sayesinde, bir işlem tüm düğümlerde onaylanmadan tamamlanmaz, bu da veri tutarlılığını ve kaybını önler.
* Çok Ana (Multi-Master): Tüm düğümler aktif olarak okuma ve yazma işlemlerini kabul edebilir, bu da yük dengeleme ve ölçeklenebilirlik potansiyeli sunar.
* Otomatik Düğüm Temini: Yeni bir düğüm kümeye katıldığında veya arızalı bir düğüm geri geldiğinde, otomatik olarak diğer düğümlerden veri alır (SST).
Üretim ortamlarında Galera Cluster’ı kullanırken, bu rehberdeki adımları dikkatlice uygulamanın yanı sıra, performans optimizasyonu, izleme, yedekleme stratejileri ve bir yük dengeleyici (HAProxy, MaxScale vb.) entegrasyonu gibi ek konuları da göz önünde bulundurmak önemlidir. Düzenli bakım, güvenlik güncellemeleri ve proaktif sorun giderme, Galera Cluster’ınızın uzun vadede sağlıklı ve verimli çalışmasını sağlayacaktır. Bu rehber, Galera Cluster dünyasına sağlam bir başlangıç yapmanız için gerekli tüm bilgileri sunmaktadır.