Aptronim Sahibinin Sayfası

2008/6/3 - 3 dakikada okunur - Yorumlar - Kompütür

mysql cluster kurulumu

Her ne kadar mysql Sun’a satıldıktan sonra geleceği hakkında biraz şüpheye düşsem de, karmaşık sorunlara basit çözümler önermesi açısından hala favori veritabanı sunucum. Bu yazıda birden fazla bilgisayardan oluşan bir mysql kümesinin nasıl oluştuğunun tarifini vereceğim. Tabii ki Ubuntu sunucular üzerinde.Mysql küme kurulumunda önceden tanımlamamız gereken bir kaç kavram var:

  1. Node: Küme içindeki bilgisayar, ben buna üye diyeceğim.

  2. Management Node:Kümenin yönetiminin yapıldığı üye. Her kümede sadece bir tane olur.

  3. Data Node:Verilerin tutulduğu üye. Birden fazla olabilir.

  4. API Node:Sorguların yapıldığı üye. Birden fazla olabilir.

  5. Bir de adı pek konulmamış bir giriş noktası var. Kullanıcılar sorgu üyelerine direkt bağlanmak yerine giriş noktası olarak belirlenen bir adrese bağlanıyorlar, böylece sorgu üyelerinden biri ulaşılmaz hale gelirse düzgün bir şekilde yönlendirme yapılması durumunda sorun çıkmıyor.

Aşağıdaki reçetede iki tane üye hem veri hem sorgu için, bir üye de yönetim ve sorgu üyesi olarak kullanılıyor. Yönetim üyesi 10.0.0.1, diğerleri de 10.0.0.2 ve 10.0.0.3 olarak örneklendi.

Kurulum:

Üye bilgisayarların herbirine güncellemelerini yaptıktan sonra en güncel sunucuyu kuruyoruz:

# aptitude install mysql-server

``Ayrıca deneme yapmak ya da üyeyi istemci olarak kullanmak niyetimiz varsa, mysql istemcisini de kuruyoruz:

# aptitude install mysql-client

``İşin kurulum kısmı bu kadar. Ama tüm yapılandırma bitmeden mysql sunucularını çalıştırmamakta fayda var.

Yapılandırma - Yönetim Üyesi:

Yönetim üyesinin yapılandırma dosyası /etc/mysql/ndb_mgmd.cnf. Bu dosyanın içi aşağıdaki gibi oluyor:

[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
[NDB_MGMD]
HostName=10.0.0.1
[NDBD]
HostName=10.0.0.2
DataDir= /var/lib/mysql-cluster
[NDBD]
HostName=10.0.0.3
DataDir=/var/lib/mysql-cluster
[MYSQLD]
[MYSQLD]
[MYSQLD]

Burada [NDBD_DEFAULT] kısmındaki NoOfReplicas girişine kaç tane veri üyemiz olduğunu yazıyoruz. Sonra [NDB_MGMD] kısmına da yönetim üyesinin adresi giriyor. Dosyanın sonun doğru da her veri üyesi için bir [NDBD] bölümü, her sorgu üyesi için de [MYSQLD] bölümü var. [MYSQLD] bölümüne de HostName yazabiliriz, ama şart değil. Üstteki dosyayla iki veri üyesi ve üç sorgu üyesi kaydetmiş oluyoruz. (Veri üyeleri aynı zamanda sorgu üyesi de olabilir.)

Yapılandırma - Veri Üyeleri:

Her veri üyesi üzerinde, /etc/mysql/my.cnfdosyasında değişiklik yapmamız gerekli. Editörle açıp [mysqld] kısmını buluyoruz ve altına şunları yazıyoruz:

ndbcluster
ndb-connectstring=10.0.0.1
default-table-type=NDBCLUSTER

Sonra yine aynı dosyanın sonuna şunları ekliyoruz:

[MYSQL_CLUSTER]
ndb-connectstring=10.0.0.1

Bu dosyayı kaydettikten sonra, aşağıdaki komutu vererek veritabanını hazırlıyoruz:

# ndbd --initial

Yapılandırma - Sorgu Üyeleri:

Her sorgu üyesi üzerinde, /etc/mysql/my.cnf dosyasını değiştiriyoruz, veri üyeleriyle aynı şekilde. Sadece bu üyelerde sonuncu komutu vermiyoruz, yani veritabanını hazırlamamıza gerek yok.

Sistemi başlatmak:

Önce yönetim üyesinde:

komutunu veriyoruz. Sonra her veri üyesinde

ve her sorgu üyesinde

komutlarını veriyoruz. Bundan sonra sorgu üyelerinden herhangi birinden bağlanarak kümeyi kullanmak mümkün olacak.

Dikkat Edilmesi Gerekenler:

  1. Kümeye üye ekleyip çıkartınca, tüm üyelerin yeniden başlatılması gerekli. Yönetim üyesi dahil tüm üyeleri kapattıktan sonra, önce yönetim üyesini baştan başlatıp sonra da diğer üyeleri başlatmak en güvenli sıralama.

  2. “HostName” vererek kümeye ekleme yaptığınızda, yapılandırma dosyasında en sona ekleyin. Batıl inanç olabilir ama başa ekleyince sanki sorunla karşılaştım.

  3. Şema değişiklikleri (veritabanı ekleme-çıkarma, indeks ekleme-çıkarma, tablonun sütunlarıyla oynama vb.) üyeler arasında otomatik olarak güncellenmiyor. Maalesef tüm veri üyelerinde elle tekrarlanması gerekli.

  4. Yönetim üyesinin herhangi bir güvenlik ayarı yok, erişimi olan herkes istediği gibi oynayabilir. O yüzden yönetim üyesi (hatta tüm küme) mutlaka güvenlik duvarıyla korunmalı.