The Falcon Storage Engine (Mysql'de Perfomansın Yeni Adı)

Mysql 6.0.4 ile Gelen FALCON Depolama Motoru,

FALCON depoloma motoru (table engine) : modern veritabanı gereksinimlerinde ,
yüksek hacimli Web hizmet uygulamalarında veya yüksek performans gerektiren
ortamlarda kullanılmak üzere tasarlanmıştır.

FALCON 32 bit ve 64 bit Windows sistemlerde, Linux üstünde,
Mac OS X, PowerPC ve Solaris / Linux SPARC platformlarında Çalışmaktadır.
Gelecek Mysql sürümlerinde de FALCON ek platformlarda hizmet
vermeyi düşünmektedir. 2 ,4,8 Çekirdekli sistemlerde ve 32 bit
sistemlerde de kullanılabilmektedir.

Büyük bellek mimarisinde ve Çok Çekirdekli işlemcilerde, büyük performans
göstermektedir. En Çok 64 bit platformlarda FALCON gücünü gösterebilmektedir.
Multi Version Concurrency Control (MVCC) ve satır düzeyinde lock özelliklerine
sahiptir. (fully ACID-compliant) tamamen ACID standartlarına uygun ve
eşzamanlı işlemler yapabilmektedir.

Seri bir şekilde veri girişi desteklemekte , aynı zamanda yüksek performans
ve veri kurtarma özelliklerinden ödün vermemektedir. B-Tree indexleme yapısına
sahiptir. Sıkıştırılmış bir formatta veriyi diskte saklar.

FALCON ile tüm veriler TABLE SPACE ler iÇinde tutulur. Oracle daki gibi.
Tablespace: Mantıksal yapıları bir arada tutan ve gruplayan veritabanı depolama ünitesidir.

FALCON ile 3 table space default olarak oluşur.

1- Adsız olan bu table space sistem tabloları tutmak iÇin kullanılır.
2- falcon_user, kullanıcı iÇin varsayılan konum olarak tanımlanan tablolarda kullanılır.
3- GeÇici tablo tutmak iÇin kullanılan falcon_temporary.

Kendimiz de table space yaratabiliriz.

CREATE TABLESPACE buyuk_tablom
    ADD DATAFILE 'file_name'
    ENGINE [=] Falcon

şeklinde syntax’a sahiptir.

FALCON table;

CREATE TABLE deneme (
    id    INT,
    adi VARCHAR (20),
    soyadi VARCHAR (20)
) ENGINE=Falcon


şeklinde kullanıma sahiptir.

Table Space ile birlikte tablo yaratma;

CREATE TABLE deneme  (
   id INT,
   adi VARCHAR (20),
   soyadi VARCHAR (20))
TABLESPACE buyuk_tablom
ENGINE=Falcon;


İstersek tablolarımız dahil olduğu table space leri değiştirebiliriz.

ALTER TABLE deneme TABLESPACE kucuk_tablom



Table space leri silmek iÇin ise,

DROP TABLESPACE buyuk_tablom ENGINE=Falcon;

Son olarak da FALCON da maximum tek tabloda 4,29 milyar satır data tutabilirsiniz.

Üzetle FALCON yüksek performans iÇin yaratılmıştır:)

www.mysqlsupport.net bilinmeyenleri anlatmaya devam ediyor……
Bir sonraki makalelerde görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator

Mysql 6.0.6 ile gelen Maria Depolama Motoru

Mysql 6.0.6 ile gelen Maria Depolama Motoru,

Bu yazımda size Mysql 6.0.6 versiyonu ile gelen MARIA depolama motoru
hakkında bilgi vermek istiyorum. Maria Table engine’i Myisam’ın
daha güvenli versiyonudur. Myisam ile temel işlevsellik olarak
tam uyumludur fakat Çökme durumunda kurtarma desteği mevcuttur.
Maria, Myisamın esneklik kazanmış versiyonudur diyebiliriz.

Eşzamanlı insert ve selectlere yanıt verebilmektedir.

CREATE TABLE maria_deneme_table (id int) ENGINE = Maria;

şeklinde kullanımı vardır.

Veri ,Maria tablolarda üÇ dosyayla depolanır:

* table.frm – Standart MySQL FRM tablonun tanımını iÇeren bir dosya.
* table.MAD – Maria veri dosyası.
* table.MAI – Maria dizin dosyası.

Maria tablolarda log tutma olayıda:

???????? maria_log :? işareti olan günün tarihidir. Marianın günlük log tutma
dosyasıdır. Bu dosyanın max. boyutunu maria_log_file_size değişkeni ile
ayarlayabilirsiniz.

maria_log_control: Bu log dosyasıyla da Maria motorunun mevcut durumu
hakkında bilgi sahibi olabilirsiniz.

MyISAM yalnızca eşzamanlı INSERT ve SELECT leri destekler.
Maria ise eşzamanlı INSERT, UPDATE ve SELECT işlemini destekler.
Maria’nın full_text_search index desteği mevcuttur.

Kısacası Maria; İnnodb’nin sağlamlığından ve Myisamın hızından nasibini alan
gayet iyi bir table engine dir.

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

Tayfur BÖLER
Database Administrator

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