pillinetwork hesabınızla giriş yapın.

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 eder.

Şekil1
Şekil1

Ş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.,

Şekil2
Şekil2

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.

1
2
3
4
5
6
[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-clusterisimli 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.

1
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 ,

1
2
[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.

1
2
3
4
5
6
[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.

Tayfur BÖLER
Database Administrator
www.mysqlsupport.net

/* tayfurboler yazdı. 30 Nisan 2009 10:33. 5 yorum var */

Yorumlar

tayfur böler,
çok güzel bir döküman olmuş ellerine sağlık. merak ettiğim bişey var bu tip yapılarda mysqle bağlanırken apiye mi yoksa yönetim noduna mı bağlanmamız gerekecek ?

Teşekkür ederim. Select işlemleri için Api noda,insertler için ndb node lara bağlanabilirsin.

/* http://www.mysqlsupport.net Mysql Hakkında Herşey.... */

Gerçekten sağlam bir döküman olmuş. Elinize sağlık. Bu tür yazılarınızın devamını bekliyorum.

bana node u elle secmek cok efektif gelmedi.. bunu otomatik olarak yapan (query tipine veya yuke gore) bir ayarlama yapılabilir mi? Sonucta benim yazılımım arka tarafta cluster yapısını bilmek zorunda degil..

Malesef Clusteringle öyle bir şansınız yok.
Mysql Proxy konusunu araştırmanızı öneririm. Veya Sqlrelay da iş görebilir.

/* http://www.mysqlsupport.net Mysql Hakkında Herşey.... */

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

pilliilan

son yorumlar

arama

pillinetwork