Ubuntu 18.04 Üzerinde Çok Düğümlü MySQL Kümesi Oluşturma Rehberi
Bu makale, yüksek erişilebilirlik ve ölçeklenebilirlik gerektiren uygulamalar için Ubuntu 18.04 işletim sistemi üzerinde çok düğümlü bir MySQL Kümesi (MySQL NDB Cluster) nasıl oluşturulacağını adım adım açıklamaktadır. MySQL Kümesi, standart MySQL sunucusundan farklı olarak, dağıtılmış ve paylaşımsız (shared-nothing) bir mimari kullanarak veri tutarlılığı ve yüksek performans sunar. Özellikle telekomünikasyon, finans ve e-ticaret gibi kesintisiz hizmetin kritik olduğu sektörlerde tercih edilen bir çözümdür.
Giriş: MySQL Kümesi Nedir ve Neden Kullanılır?
MySQL Kümesi, Oracle tarafından geliştirilen, gerçek zamanlı, dağıtılmış ve yüksek erişilebilir bir veritabanı çözümüdür. Standart MySQL sunucusunun aksine, verileri disk yerine bellek tabanlı NDB depolama motorunu kullanarak saklar ve birden fazla sunucu arasında otomatik veri replikasyonu ve parçalama (sharding) sağlar. Bu mimari, sistemin bir bölümü arızalansa bile veritabanının çalışmaya devam etmesini garanti eden “shared-nothing” (paylaşımsız) prensibine dayanır. Her düğüm kendi verisine ve kaynaklarına sahiptir, bu da tek bir hata noktasını (single point of failure) ortadan kaldırır.
MySQL Kümesi kullanmanın temel nedenleri şunlardır:
* Yüksek Erişilebilirlik (High Availability): Otomatik hata tespiti ve failover mekanizmaları sayesinde, bir düğümün çökmesi durumunda bile hizmet kesintisiz olarak devam eder. Veri düğümleri arasında senkron replikasyon, her zaman güncel verilere erişim sağlar.
* Yüksek Ölçeklenebilirlik (High Scalability): Veri düğümleri ekleyerek yatayda ölçeklenebilirlik sunar. Veriler otomatik olarak parçalanır ve birden fazla veri düğümüne dağıtılır, bu da büyük veri kümeleri ve yüksek işlem yükleri için idealdir.
* Gerçek Zamanlı Performans: Bellek içi depolama motoru (NDB) sayesinde düşük gecikme süresi ve yüksek verim sağlar. Özellikle yoğun okuma/yazma işlemlerinin olduğu uygulamalar için uygundur.
* Esneklik: Çeşitli uygulamaların ihtiyaçlarına göre farklı düğüm tiplerini bir araya getirme esnekliği sunar.
Bu makalede, en az beş ayrı Ubuntu 18.04 sunucusunu kullanarak bir MySQL Kümesi kurulumunu detaylandıracağız: iki yönetim düğümü (isteğe bağlı, yüksek erişilebilirlik için önerilir), iki veri düğümü ve bir veya daha fazla SQL düğümü.
MySQL Kümesi Mimarisi ve Bileşenleri
MySQL Kümesi, farklı roller üstlenen birden fazla düğüm tipinden oluşur. Bu düğümler, birbirleriyle ağ üzerinden iletişim kurarak kümenin genel işlevselliğini sağlar. Temel düğüm tipleri şunlardır:
* Yönetim Düğümleri (Management Nodes – MGM): Kümenin yapılandırma dosyalarını, meta verilerini ve küme durumu hakkında bilgileri saklar. Diğer düğümlerin küme hakkında bilgi edinmek ve birbirlerini bulmak için başvurdukları ilk noktadır. Genellikle iki yönetim düğümü kullanılır (birincil ve ikincil) yüksek erişilebilirlik sağlamak amacıyla. MGM düğümleri, veri depolamaz ve işlem yükü düşüktür.
* Örnek IP: 192.168.1.101 (MGM1), 192.168.1.102 (MGM2)
* Veri Düğümleri (Data Nodes – NDBD): Kümedeki verilerin depolandığı yerdir. NDB depolama motorunu kullanır ve verileri bellekte tutar. Her veri düğümü, verinin bir kopyasını veya bir parçasını barındırır ve diğer veri düğümleriyle senkronize olarak çalışır. Yüksek erişilebilirlik için en az iki veri düğümü gereklidir.
* Örnek IP: 192.168.1.103 (NDBD1), 192.168.1.104 (NDBD2)
* SQL Düğümleri (SQL Nodes – MySQLD): Standart MySQL sunucularıdır ancak NDB depolama motorunu kullanmak üzere yapılandırılmışlardır. Uygulamalar, SQL düğümleri aracılığıyla kümeye bağlanır ve SQL sorguları gönderir. SQL düğümleri, verileri doğrudan depolamaz; bunun yerine, veri düğümleriyle iletişim kurarak veri okuma ve yazma işlemlerini gerçekleştirir.
* Örnek IP: 192.168.1.105 (MySQLD1), 192.168.1.106 (MySQLD2)
* API Düğümleri (API Nodes – isteğe bağlı): Java, C++ veya diğer programlama dilleriyle doğrudan NDB API’sini kullanarak kümedeki verilere erişmek isteyen uygulamalar için kullanılır. Genellikle SQL düğümleri çoğu kullanım durumu için yeterlidir.
Bu rehberde, bir yönetim düğümü, iki veri düğümü ve iki SQL düğümü içeren basit bir kurulum üzerine odaklanacağız. Yüksek erişilebilirlik için birden fazla yönetim düğümü ve SQL düğümü eklemek mümkündür.
Ön Koşullar
Kuruluma başlamadan önce aşağıdaki ön koşulların yerine getirildiğinden emin olun:
1. İşletim Sistemi: Her düğüm için ayrı bir Ubuntu 18.04 LTS sunucusu (veya sanal makine).
2. Ağ Yapılandırması: Tüm düğümler arasında ağ bağlantısı olduğundan ve birbirlerine IP adresleri veya ana bilgisayar adları (hostname) üzerinden erişebildiğinden emin olun. /etc/hosts dosyasını düzenleyerek veya bir DNS sunucusu kullanarak ana bilgisayar adlarını çözümlemeyi sağlayabilirsiniz. Örnek IP adresleri aşağıdaki gibidir:
* MGM Düğümü: 192.168.1.101
* Veri Düğümü 1: 192.168.1.102
* Veri Düğümü 2: 192.168.1.103
* SQL Düğümü 1: 192.168.1.104
* SQL Düğümü 2: 192.168.1.105
3. Kullanıcı Yetkileri: Tüm kurulum adımları için sudo yetkilerine sahip bir kullanıcı veya root kullanıcısı.
4. Güvenlik Duvarı (Firewall): Gerekli portların (varsayılan olarak 1186 MGM için, 3306 SQL düğümleri için) tüm düğümler arasında açık olduğundan emin olun. UFW kullanıyorsanız:
sudo ufw allow 1186/tcp
sudo ufw allow 3306/tcp
sudo ufw reload
5. Kaynaklar: Her düğüm için yeterli CPU, RAM ve disk alanı. Özellikle veri düğümleri için, veritabanı boyutuna bağlı olarak yeterli RAM ve hızlı depolama önemlidir.
1. Ortak Sistem Hazırlığı ve MySQL Küme Yazılımının Kurulumu
Her düğümde (MGM, NDBD, MySQLD) aşağıdaki adımları uygulayın.
1.1. Sistem Güncelleme ve Gerekli Paketleri Kurma
Her sunucuda sistemi güncelleyin:
sudo apt update
sudo apt upgrade -y
Gerekli yardımcı programları ve derleme araçlarını kurun (MySQL Cluster genellikle ikili paket olarak gelir, ancak bazı yardımcı araçlar için gerekebilir):
sudo apt install -y libaio1 libnuma1 net-tools wget
1.2. MySQL Küme Yazılımını İndirme
MySQL Kümesi, standart MySQL Server paketlerinden ayrı olarak dağıtılır. Oracle’ın resmi web sitesinden veya yansı sitelerinden uygun sürümü indirmelisiniz. Ubuntu 18.04 için genellikle mysql-cluster-gpl-8.0.x-linux-glibc2.12-x86_64.tar.gz gibi bir paket aramalısınız. Bu rehberde, örnek olarak MySQL Cluster 8.0.x sürümünü kullanacağız.
Önce /opt dizinine gidin ve indirme işlemini yapın:
cd /opt
sudo wget https://downloads.mysql.com/archives/cluster/mysql-cluster-gpl-8.0.XX-linux-glibc2.12-x86_64.tar.gz
XX yerine güncel sürüm numarasını yazın, örneğin 32
İndirdiğiniz dosyayı çıkarın:
sudo tar -xvzf mysql-cluster-gpl-8.0.XX-linux-glibc2.12-x86_64.tar.gz
Çıkarılan dizinin adını daha basit bir şeye yeniden adlandırın:
sudo mv mysql-cluster-gpl-8.0.XX-linux-glibc2.12-x86_64 mysqlcluster
Şimdi /opt/mysqlcluster dizini altında MySQL Küme bileşenleri bulunmaktadır.
1.3. MySQL Kullanıcısı Oluşturma ve İzinleri Ayarlama
MySQL Küme işlemlerini çalıştırmak için ayrı bir sistem kullanıcısı oluşturmak iyi bir uygulamadır:
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
MySQL Küme dizinine uygun izinleri verin:
sudo chown -R mysql:mysql /opt/mysqlcluster
2. Yönetim Düğümü (MGM) Kurulumu ve Yapılandırması
MGM düğümünü (örneğin 192.168.1.101) yapılandıracağız.
2.1. MGM İçin Veri Dizinini Oluşturma
Yönetim düğümünün meta verileri ve logları için bir dizin oluşturun:
sudo mkdir -p /var/lib/mysql-cluster
sudo chown -R mysql:mysql /var/lib/mysql-cluster
2.2. config.ini Yapılandırma Dosyasını Oluşturma
Bu dosya, kümenin tüm düğümleri için merkezi yapılandırmayı içerir. /var/lib/mysql-cluster/config.ini yolunda oluşturun:
sudo nano /var/lib/mysql-cluster/config.ini
Aşağıdaki içeriği ekleyin. IP adreslerini kendi yapılandırmanıza göre güncellemeyi unutmayın.
[ndbd default]
NoOfReplicas=2 # Her tablonun 2 kopyası olacak (2 veri düğümü için)
DataDir=/var/lib/mysql-cluster # Veri düğümleri için varsayılan veri dizini
DataMemory=80M # Her veri düğümünde veriler için ayrılan bellek (örnek)
IndexMemory=18M # Her veri düğümünde indeksler için ayrılan bellek (örnek)
[tcp default]
Bağlantı gecikmesini azaltmak için Nagle algoritmasını devre dışı bırakır
SendBufferMemory=16M
ReceiveBufferMemory=16M
[ndb_mgmd]
Id=1 # Yönetim düğümü kimliği
Hostname=192.168.1.101 # Yönetim düğümünün IP adresi
DataDir=/var/lib/mysql-cluster # Yönetim düğümü için veri dizini
[ndbd]
Id=2 # Veri düğümü 1 kimliği
Hostname=192.168.1.102 # Veri düğümü 1'in IP adresi
[ndbd]
Id=3 # Veri düğümü 2 kimliği
Hostname=192.168.1.103 # Veri düğümü 2'nin IP adresi
[mysqld]
Id=4 # SQL düğümü 1 kimliği
Hostname=192.168.1.104 # SQL düğümü 1'in IP adresi
[mysqld]
Id=5 # SQL düğümü 2 kimliği
Hostname=192.168.1.105 # SQL düğümü 2'nin IP adresi
İsteğe bağlı olarak daha fazla SQL düğümü veya API düğümü eklenebilir
[api]
Id=6
Hostname=192.168.1.106
DataMemory ve IndexMemory ayarları, veri düğümlerinde NDB motoru tarafından kullanılacak bellek miktarını belirler. Bu değerleri sunucularınızın RAM kapasitesine ve veritabanınızın boyutuna göre ayarlamanız kritik öneme sahiptir. Genellikle, başlangıç için düşük değerler kullanılıp daha sonra artırılabilir.
2.3. Yönetim Düğümünü Başlatma
Yönetim düğümünü başlatın:
sudo /opt/mysqlcluster/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
--initial bayrağı, ilk başlatmada küme yapılandırma dosyalarını oluşturmak için kullanılır. Daha sonraki başlatmalarda bu bayrağı kullanmayın.
Yönetim düğümünün çalıştığını doğrulamak için ndb_mgm istemcisini kullanın:
sudo /opt/mysqlcluster/bin/ndb_mgm
Bu komut sizi ndb_mgm> istemine getirecektir. Burada SHOW komutunu kullanarak küme durumunu görebilirsiniz:
ndb_mgm> SHOW
Şu anda sadece yönetim düğümünün çalıştığını ve diğer düğümlerin bağlı olmadığını görmelisiniz.
Sistemd Hizmeti Olarak Başlatma (İsteğe Bağlı ama Önerilir):
MGM düğümünü bir systemd servisi olarak çalıştırmak, sistem yeniden başlatıldığında otomatik olarak başlamasını sağlar.
sudo nano /etc/systemd/system/ndb_mgmd.service
İçeriği ekleyin:
[Unit]
Description=MySQL NDB Cluster Management Server
After=network.target
[Service]
Type=forking
ExecStart=/opt/mysqlcluster/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Hizmeti etkinleştirin ve başlatın:
sudo systemctl daemon-reload
sudo systemctl enable ndb_mgmd
sudo systemctl start ndb_mgmd
sudo systemctl status ndb_mgmd
3. Veri Düğümleri (NDBD) Kurulumu ve Yapılandırması
Her iki veri düğümünde de (örneğin 192.168.1.102 ve 192.168.1.103) aşağıdaki adımları uygulayın.
3.1. NDBD İçin Veri Dizinini Oluşturma
Veri düğümleri için veri depolama dizinini oluşturun:
sudo mkdir -p /var/lib/mysql-cluster
sudo chown -R mysql:mysql /var/lib/mysql-cluster
Bu dizin, config.ini dosyasında DataDir olarak belirtilen dizinle aynı olmalıdır.
3.2. my.cnf Yapılandırma Dosyasını Oluşturma
Her veri düğümünde /etc/my.cnf veya /etc/mysql/my.cnf dosyasını oluşturun/düzenleyin:
sudo nano /etc/my.cnf
Aşağıdaki içeriği ekleyin. ndb-connectstring değerini yönetim düğümünün IP adresiyle güncelleyin.
[mysqld]
NDB Cluster kullanmadığı için bu bölüm boş bırakılabilir veya kaldırılabilir.
Ancak bazı MySQL araçları için [mysqld] bölümü gerekebilir.
[mysql_cluster]
Yönetim düğümünün IP adresi
ndb-connectstring=192.168.1.101
3.3. Veri Düğümünü Başlatma
Veri düğümünü başlatın:
sudo /opt/mysqlcluster/bin/ndbd
Yönetim düğümünde ndb_mgm istemcisini kullanarak durumu kontrol edin:
ndb_mgm> SHOW
Şimdi her iki veri düğümünün de bağlı ve çalıştığını görmelisiniz.
Sistemd Hizmeti Olarak Başlatma (İsteğe Bağlı ama Önerilir):
Veri düğümünü bir systemd servisi olarak çalıştırmak.
sudo nano /etc/systemd/system/ndbd.service
İçeriği ekleyin:
[Unit]
Description=MySQL NDB Cluster Data Node
After=network.target ndb_mgmd.service # ndb_mgmd.service'i ekleyin eğer yönetim düğümü aynı makinedeyse
[Service]
Type=forking
ExecStart=/opt/mysqlcluster/bin/ndbd
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Hizmeti etkinleştirin ve başlatın:
sudo systemctl daemon-reload
sudo systemctl enable ndbd
sudo systemctl start ndbd
sudo systemctl status ndbd
Her iki veri düğümü için de bu adımları tekrarlayın.
4. SQL Düğümleri (MySQLD) Kurulumu ve Yapılandırması
Her iki SQL düğümünde de (örneğin 192.168.1.104 ve 192.168.1.105) aşağıdaki adımları uygulayın.
4.1. MySQL Kurulumu ve Yapılandırması
SQL düğümleri, MySQL Küme yazılımı ile birlikte gelen mysqld ikilisini kullanır. Standart MySQL Server kurulumu yapmayın.
MySQL Küme yazılımını /opt/mysqlcluster altına çıkardığımızdan, şimdi bu dizini MySQL’in beklediği yerlere bağlamamız ve ilk kurulumu yapmamız gerekecek.
MySQL Dizinlerini Oluşturma:
sudo mkdir -p /var/lib/mysql
sudo mkdir -p /var/log/mysql
sudo mkdir -p /var/run/mysqld
sudo chown -R mysql:mysql /var/lib/mysql /var/log/mysql /var/run/mysqld
my.cnf Yapılandırma Dosyasını Oluşturma:
sudo nano /etc/my.cnf
Aşağıdaki içeriği ekleyin. ndb-connectstring değerini yönetim düğümünün IP adresiyle güncelleyin. datadir ve log-error yollarını doğru belirttiğinizden emin olun.
[mysqld]
ndbcluster # NDB Cluster depolama motorunu etkinleştir
ndb-connectstring=192.68.1.101 # Yönetim düğümünün IP adresi
datadir=/var/lib/mysql # MySQL veri dizini
socket=/var/run/mysqld/mysqld.sock
log-error=/var/log/mysql/error.log
pid-file=/var/run/mysqld/mysqld.pid
Diğer genel MySQL ayarları
port=3306
bind-address=0.0.0.0 # Tüm IP adreslerinden bağlantılara izin ver
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
#query_cache_limit = 1M
#query_cache_size = 16M
#query_cache_type = 1
tmp_table_size = 32M
max_heap_table_size = 32M
NDB ile ilgili ek ayarlar (isteğe bağlı, performansa göre ayarlanabilir)
ndb_force_storage_engine=NDB
ndb_autoincrement_prefetch_sz=1
ndb_table_no_direct_jps=1
[mysql_cluster]
ndb-connectstring=192.168.1.101
[client]
port=3306
socket=/var/run/mysqld/mysqld.sock
4.2. MySQL Veri Dizinini Başlatma (İlk Kurulum)
MySQL sunucusunu ilk kez başlatmadan önce, veri dizininin başlatılması gerekir. Bu işlem, sistem veritabanlarını ve izin tablolarını oluşturur.
sudo /opt/mysqlcluster/bin/mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql
--initialize-insecure root kullanıcısı için boş şifre ile başlatır.
Güvenli bir kurulum için --initialize kullanıp geçici bir şifre oluşturulabilir.
Bu adım, /var/lib/mysql dizininde gerekli MySQL sistem tablolarını oluşturacaktır.
4.3. SQL Düğümünü Başlatma
SQL düğümünü başlatın:
sudo /opt/mysqlcluster/bin/mysqld_safe --ndb-connectstring=192.168.1.101 &
Veya daha yaygın olarak bir systemd servisi olarak başlatın.
Sistemd Hizmeti Olarak Başlatma:
sudo nano /etc/systemd/system/mysqld.service
İçeriği ekleyin:
[Unit]
Description=MySQL NDB Cluster SQL Node
After=network.target ndbd.service # ndbd.service'i ekleyin eğer veri düğümü aynı makinedeyse
[Service]
User=mysql
Group=mysql
ExecStart=/opt/mysqlcluster/bin/mysqld --defaults-file=/etc/my.cnf --ndb-connectstring=192.168.1.101
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
Hizmeti etkinleştirin ve başlatın:
sudo systemctl daemon-reload
sudo systemctl enable mysqld
sudo systemctl start mysqld
sudo systemctl status mysqld
Her iki SQL düğümü için de bu adımları tekrarlayın.
4.4. MySQL Root Şifresi Ayarlama ve Kullanıcı Oluşturma
SQL düğümleri çalıştıktan sonra, root kullanıcısı için bir şifre ayarlamanız ve diğer veritabanı kullanıcılarını oluşturmanız gerekir.
mysql -u root
MySQL isteminde aşağıdaki komutları çalıştırın:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword';
FLUSH PRIVILEGES;
-- Uzaktan erişim için root kullanıcısını yapılandırma (isteğe bağlı, güvenlik riski taşır)
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword';
GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- Uygulama kullanıcısı oluşturma
CREATE USER 'app_user'@'%' IDENTIFIED WITH mysql_native_password BY 'AppUserPassword';
GRANT ALL PRIVILEGES ON my_ndb_database.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
Bu adımları her SQL düğümünde tekrarlamanız gerekir. MySQL Kümesi’nde, kullanıcılar ve izinler SQL düğümlerinde yönetilir ve NDB veri düğümlerinde depolanmaz. Ancak, NDB depolama motorunu kullanan tablolar küme genelinde tutarlı olacaktır.
5. Küme Durumunu Doğrulama ve Test Etme
Tüm düğümler başlatıldıktan sonra, kümenin doğru çalıştığından emin olmak için doğrulama yapın.
5.1. Yönetim Düğümünde Küme Durumunu Kontrol Etme
Yönetim düğümünde ndb_mgm istemcisini kullanarak tüm düğümlerin bağlı ve çalıştığını kontrol edin:
sudo /opt/mysqlcluster/bin/ndb_mgm
Ardından ndb_mgm> isteminde SHOW komutunu çalıştırın:
ndb_mgm> SHOW
Çıktıda tüm NDBD ve MySQLD düğümlerinin connected ve started durumunda olduğunu görmelisiniz.
5.2. SQL Düğümünde NDB Motorunu Kontrol Etme
Bir SQL düğümüne bağlanın ve NDB depolama motorunun mevcut ve etkin olduğunu kontrol edin:
mysql -u root -p
Şifrenizi girdikten sonra:
SHOW ENGINES;
Çıktıda NDBCLUSTER veya NDB motorunun YES veya DEFAULT olarak listelendiğini görmelisiniz.
5.3. NDB Tablosu Oluşturma ve Test Etme
Bir SQL düğümünde NDB depolama motorunu kullanarak bir veritabanı ve tablo oluşturun:
CREATE DATABASE my_ndb_database;
USE my_ndb_database;
CREATE TABLE my_ndb_table (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
value INT
) ENGINE=NDBCLUSTER;
INSERT INTO my_ndb_table (name, value) VALUES ('Test Item 1', 100);
INSERT INTO my_ndb_table (name, value) VALUES ('Test Item 2', 200);
SELECT * FROM my_ndb_table;
Bu tablo, NDB depolama motorunu kullandığı için verileri veri düğümlerinde saklanacaktır.
5.4. Veri Tutarlılığını Kontrol Etme
Şimdi başka bir SQL düğümüne bağlanın ve aynı veritabanını ve tabloyu sorgulayın:
mysql -u root -p -h 192.168.1.105 # Diğer SQL düğümünün IP adresi
USE my_ndb_database;
SELECT * FROM my_ndb_table;
Her iki SQL düğümünde de aynı verileri görmelisiniz. Bu, veri tutarlılığının ve replikasyonun doğru çalıştığını gösterir.
5.5. Hata Toleransını Test Etme (Opsiyonel)
Bir veri düğümünü veya SQL düğümünü durdurarak kümenin hata toleransını test edebilirsiniz.
Örnek: Bir Veri Düğümünü Durdurma
Veri düğümü 1’e (192.168.1.102) gidin ve ndbd servisini durdurun:
sudo systemctl stop ndbd
Yönetim düğümünde ndb_mgm istemcisinden SHOW komutunu çalıştırın. Veri düğümü 1’in stopped veya disconnected olarak göründüğünü ancak kümenin hala çalıştığını görmelisiniz. SQL düğümlerinden hala verilere erişebiliyor olmanız gerekir.
Durmuş olan veri düğümünü tekrar başlatın:
sudo systemctl start ndbd
Küme otomatik olarak kendini senkronize edecek ve veri düğümü tekrar aktif olacaktır.
6. Ek Yapılandırma ve İpuçları
* Yüksek Erişilebilir Yönetim Düğümleri: Üretim ortamlarında tek bir yönetim düğümü yerine iki yönetim düğümü kullanılması önerilir. İkinci bir MGM düğümü kurmak için config.ini dosyasına ek bir [ndb_mgmd] bölümü eklemeniz ve ilgili sunucuda ndb_mgmd servisini başlatmanız yeterlidir.
* Bellek Ayarları: DataMemory ve IndexMemory ayarları, NDB Cluster performansında kritik rol oynar. Bu değerleri dikkatlice izlemeli ve uygulamanızın ihtiyaçlarına göre ayarlamalısınız. Yetersiz bellek, kümenin performansını düşürebilir veya kararsız hale getirebilir.
* Disk Alanı: NDB motoru verileri bellekte tutsa da, işlem logları ve checkpoint’ler diskte saklanır. Bu nedenle, veri düğümlerinde yeterli ve hızlı disk alanı olduğundan emin olun.
* Yedekleme ve Geri Yükleme: MySQL Kümesi için özel yedekleme ve geri yükleme stratejileri vardır. ndb_restore ve ndb_backup gibi araçlar kullanılarak kümenin yedeklemesi yapılabilir.
* İzleme: Kümenin durumunu izlemek için ndb_mgm istemcisi dışında, MySQL Enterprise Monitor gibi profesyonel araçlar veya Prometheus/Grafana gibi açık kaynaklı çözümler kullanılabilir.
Sonuç
Bu makalede, Ubuntu 18.04 üzerinde çok düğümlü bir MySQL Kümesi (MySQL NDB Cluster) kurmanın ve yapılandırmanın temel adımlarını ele aldık. Yönetim düğümlerinden veri düğümlerine ve SQL düğümlerine kadar her bileşenin kurulumunu, yapılandırmasını ve başlatılmasını detaylandırdık. Ayrıca kümenin doğru çalıştığını doğrulamak ve temel hata toleransını test etmek için adımlar sunduk.
MySQL Kümesi, yüksek erişilebilirlik, gerçek zamanlı performans ve yatay ölçeklenebilirlik gerektiren modern uygulamalar için güçlü bir çözümdür. Ancak karmaşık bir yapıya sahip olduğu için, üretim ortamında devreye almadan önce detaylı planlama, test ve performans ayarlaması yapmak kritik öneme sahiptir. Bu rehber, küme kurulumu için sağlam bir temel oluşturmaktadır ve ileri düzey yapılandırmalar için MySQL Cluster resmi dokümantasyonuna başvurmanız önerilir.
