Master slave replikasyon. Replikasyon kopyalama, eşlenme anlamına gelmektedir. Veritabanlarında ise; bir yedek bulundurmak, veri güvenliği, veri erişilebilirliği, yüksek düzeylerde IO alan sunucularda sunucu yükünü biraz azaltmak gibi amaçlarla farklı fiziksel/sanal sunucularda senkronize şekilde verilerin kopyalanmasıdır.

Örnek olarak; resmi bir kuruma bir proje yaptınız ve bunun yedeklerini tutmak istediğinizde kullanabileceğiniz bir yöntem.

MySQL için 2(iki) tür replikasyon türü bulunmaktadır.

  1. Master-Slave Replikasyon
  2. Master-Master Replikasyon

Master Slave Replikasyon

Bu mimaride Master sunucuda yapılan değişiklikler slave sunuculara aktarılır. Veri akışı tek yönlüdür. Yani; Master sunucuda yapılan değişiklikler Slave sunuculara aktarılır. Slave sunucuda yaptığımız değişiklikler Master sunucuya aktarılmaz.

Öncelikle sunucularımıza ipleri belirliyoruz.

Master Sunucu : 192.168.2.17
Slave Sunucu : 192.168.2.18

MySQL portuna(varsayılan 3306) izin veriyoruz.

MySQL’i durduruyoruz.

Master Sunucu Ayarları
my.cnf veya my.ini dosyasını açıyoruz.(Varsayılan Konum: Ubuntu: /etc/my.cnf; Windows: C:/ProgramData/MySQL/MySQL Server x.x/my.ini)

Windows için bir IDE veya metin editörü ile açıyoruz. Konfigrasyon dosyasının içinde

bu satırlar bulunuyorsa başına diez (#) işareti koyarak etkisizleştiriyoruz. Gerekli ayarları [mysqld] altında gerçekleştiriyoruz;
server-id=x sunucuların birbirinden farklı idye sahip olması gerekiyor.
log-bin=mysql-bin replikasyon işlemi için binary loglarını kullanacağımızı belirtip, aktif ediyoruz.
bin-log-do-db=veritabanıadı hangi veri tabanını/tabanlarını replikasyon olacağını belirtiyoruz. Toplarsak;

MySQL’i tekrar başlatıyoruz.

Master sunucu için ayarlarımız bunlar. Slave sunucu için master sunucu üzerinde bir kullanıcı oluşturacağız.

Burda MySQL’e bağlanıyoruz, replikasyon işlemleri için kullanıcı oluşturuyoruz. Master sunucusunda log dosyasının pozisyon bilgilerini alıyoruz. Bu bilgiler birazdan gerekecek.

 

-psifre kısmında dikkat edilmesi gereken, burası bir yazım hatası değildir. Şifrenin 1234 olduğunu varsayarsak -p parametresi ile bitişik yazıyoruz: -p1234

Veritabanımızı dışa aktardık. Slave sunucuda içe aktaracağız.

Veri tabanımızı kitlemiştik, UNLOCK TABLES ile kilidi açmış olduk.

Slave Sunucu Ayarları

MySQL’i durduruyoruz.

Veritabanını oluşturuyoruz.

Master sunucudan aldığımız veritabanı kopyasını içeri aktarıyoruz.

MySQL konfigrasyonunu yapıyoruz. my.cnf veya my.ini dosyasını açıyoruz, aşağıdaki şekilde düzenliyoruz.

Burda önemli olan kısım server-id, 2 olarak ayarladım. Yeni bir slave sunucu daha eklemek isterseniz 3 veya daha büyük bir id tanımlamalısınız. Yani benzersiz değer olmalı.Sıra geldi aldığımız pozisyon bilgilerini girmeye.

MySQL’i başlatıyoruz.

Evet sonunda bitirdik 🙂 Şimdi test edebilirsiniz.

Merhaba arkadaşlar; insert or update (INSERT … ON DUPLICATE KEY UPDATE) işlevi, belirtilen unique veya primary keye göre veri yoksa insert işlemi, varsa update işlemi yapar. Bu işlev MySQL 5.0 ile gelmiştir. Daha önceki sürümler desteklemez.

Kod Yapısı:

Burda a unique veya primary key b,c ise normal değerler. Eğer manuel değerler girmek istiyorsak b=VALUES(b) yerine b=’myazarc’ şeklinde olmalıdır.

Hangi unique keye göre güncelleme işlemi yapılacaksa o alan update kısmında belirtilmez.

Daha fazla bilgi: INSERT … ON DUPLICATE KEY UPDATE Syntax

CodeIgniter kullanıcılarına yakın olan activeRecord’a benzer bir yapıda PHP -> PDO ile hazırlanmış bir veritabanı sınıfıdır. Şuanda mevcut sürümü 0.5 ‘tir. 1.0 çalışmaları sürmektedir. 1.0’da başlıca yenilikler:

  • insertorUpdate
  • having
  • PostgreSQL desteği
  • Kullanıcı kılavuzu

Kullanıcı kılavuzu(user guide) çalışmaları sürmektedir. Çalışma bitince yayınlanacaktır.

http://sourceforge.net/projects/pdomemcachedclass

Örnekler: