Mysql Cluster

Mysql Cluster,

Yüksek trafiğe ve yüksek miktarda veri alış verişine sahip bir
database’iniz varsa, ve bu database’iniz ölüp ölüp diriliyorsa
artık cluster’a geçme vakti gelmiş demektir. Cluster kelime anlamı
olarak kümeleme demektir. Mysql Clustering dataları tablo boyutunda,
cluster’e dahil ndb node’larda kümeler halinde tutar. Ve yine bu
node’lar kendi aralarında data kopya tutma işlerini bu şekilde yaparlar.
Yani tabloları farklı fiziksel makinalarda tutup , datanın kopyalarını
oluştururlar. İstenirse kümeye yeni makinalar(ndb node) eklenebilir.
Bu şekilde bir büyüme de sağlanmış olur.

Clusterin performans’a olan katkısı haricinde database’inizin
sürekliliğini sağlar. Yani ndb node’lardan biri çökerse diğeri
kaldığı yerden devam edecektir.

şimdi yukarıdaki diagramda ,

1 adet (192.168.1.21) ip’li yönetim nodu
2 adet (192.168.1.22-192.168.1.23) ip’li ndb node (depolama nodu)
1 adet (192.168.1.24) ip’li Api node mevcuttur.(sorguların gönderileceği mysql server)

Adım adım cluster yapımızı kurmaya başlayalım.

1-Adım: Tüm makinalarda Mysql server kurulu olduğunu varsayıyorum.
192.168.1.21 ip’li makinada sırayla,

mkdir /var/lib/mysql-cluster –> /var/lib/ in altında mysql-cluster
isimli bir dizin oluşturuyoruz.
cd /var/lib/mysql-cluster –> oluşturduğumuz klasörün içine giriyoruz.
nano config.ini –> diyerek config.ini adında bir conf dosyası
oluşturup içini aşağıdaki gibi dolduruyoruz.,

Dosyayı kaydedip kapatıyoruz. Ve ndb_mgmd komutunu,
daha sonra da, ps -ef | grep [n]db komutunu Çalıştırıyoruz.
ps -ef | grep [n]db komutu ile yonetim nodunun Çalışıp , Çalışmadığını
kontrol ediyoruz.

2-Adım: şimdi ise her iki depolama nodunu bulunduğu makinalarda
(192.168.1.22-192.168.1.23) :

Not:Bu arada her iki makinada da mysql stop durumda olacak.
nano /etc/mysql/my.cnf dosyalarını aÇıp aşağıdaki gibi dolduruyoruz.

[mysqld]
ndbcluster
ndb-connectstring=’host=192.168.1.21’Â Â Â # Yonetim nodunun ip adresi

[mysql_cluster]
ndb-connectstring=’host=192.168.1.21’Â Â Â # Yonetim nodunun ip adresi

Dosyaları kaydedip kapattıkdan sonra ,

mkdir /var/lib/mysql-cluster –> /var/lib/ in altında mysql-cluster
isimli bir dizin oluşturuyoruz.
/usr/bin/ndbd – – initial –> komutunu veriyoruz.Ve mysql server’ı
/etc/init.d/mysql start –>komutu ile start ediyoruz.
ps -ef | grep [n]dbd –> komutu ile ndb nodların Çalışıp Çalışmadığını
kontrol ediyoruz.

3-Adım: Yonetim noduna geçiyoruz.(192.168.1.21)

ndb_mgm komutunu Çalıştırıp yonetim konsolunu
aÇmış oluyoruz.
Sonra show komutu ile yonetim ve depolama nodlarının Çalıştığını
görebiliriz.

şimdi test aÇısından depolama nodlarına gidip, her iki node da da
aynı isme sahip bir database oluşturun. Ve devamında da
serverlardan birinde bir tablo oluşturup, tabloya birkaÇ satır
veri girişi yapın. Gidip diğer server’a baktığınızda aynı tablonun
diğer server da da oluştuğunu göreceksiniz. Tam tersi iÇinde
geÇerlidir.

DİKKAT: Tabloyu create ederken engine=ndbcluster; ifadesini
eklemeyi unutmayın.
create table test (id int) engine=ndbcluster;
Ama ben her tablo create ettiğimde engine olarak bu tablonun
ndbcluster olduğunu belitmek istemiyorum diyorsanız
my.cnf conf dosyasının içine ,
[mysqld]
default-table-type=NDBCLUSTER

ifadesini eklemeniz gerekecektir.

4-Adım: Evet şimdi ise Apı nodumuzu clusterımıza ekleyelim.
(192.168.1.24). Bu makinada da mysql serverın kurulu olduğunu
ve şu an stop durumda olduğunu varsayıyorum.

nano /etc/mysql/my.cnf dosylarını aÇıp aşağıdaki gibi dolduruyoruz.

[mysqld]
ndbcluster
ndb-connectstring=’host=192.168.1.21’Â Â Â # Yonetim nodunun ip adresi

[mysql_cluster]
ndb-connectstring=’host=192.168.1.21’Â Â Â # Yonetim nodunun ip adresi

Kaydedip kapatıyoruz.
/etc/init.d/mysql start –> komutunu vererek mysql start ediyoruz.
Evet böylece Apı nodumuzda cluster yapısına eklenmiş oldu.
Api nodun bulunduğu mysql server’a bağlanıp ndb nodlarda
test iÇin oluşturduğumuz db yi, bu serverda da create edin.
Ve göreceksiniz ki yeni oluşturduğumuz db içinde, test için
diğer tarafta oluşturduğumuz ve kayıt girdiğimiz tablolar
olmuş olacak.
Apı nodunu sadece select işlemleri için kullanmanız tavsiye
edilir.Tabi ki burada yapılan herhangi bir update ,insert
anında diğer dblere yansır.

Yonetim noduna gidip show komutunu tekrardan verirseniz
api nodununda cluster yapısına eklenmiş olduğunu görürsünüz.

Clustring le ilgili püf noktaları anlatan bir makele de kısa süre
sonra yayına girecektir.

Bir sonraki makalelerde görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator