Takip et

Ubuntu 18.04 Üzerinde Çok Düğümlü MySQL Kümesi Oluşturma Rehberi

Ubuntu 18.04 Üzerinde Çok Düğümlü MySQL Kümesi Oluşturma Rehberi Bu makale, yüksek erişilebilirlik ve ölçeklenebilirlik gerektiren uygula

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.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.