MySQL

Mysql/Mariadb Master-Slave Replikasyon

Replication kelime anlamı olarak Veri Kopyalama anlamına gelir. Database tarafında ise; bir database’in başka bir sunucu üzerinde eşleniğinin ‘yani hem yapısal hem de datasal olarak’ tutulmasıdır. Master database da yapılan herhagi bir değişiklik anında eşlenik database ‘Slave’ yansır. Replication bir backuplama yöntemi değildir. Çünkü Master database de yapılan bir delete işlemi slave database de de yapılacağı için her iki database de de veri silinmiş olacaktır. Replication nun faydası yüksek erişilebilirlilik sağlaması(Hight Availability) ve uygulamanın performansında artışa sebeb olmaktır. Bu performans artışını da uygulama tarafında insert-update-delete işlemlerini master database’e select işlemlerini de slave database’e yönlendirilerek yapılabilir. Tabi bu yapıyı Çoğaltma şansınız var.Master -Slave -Slave şeklinde Slave sunucau sayısını arttırabilirsiniz. Burada dikkat etmeniz gereken bir nokta var.Master ve Slave sunucuların aynı network farmında bulunması gerekmektedir. Aksi takdirde perforans ta ciddi azalmalar meydana gelir.

Replikasyon Çeşitleri

Replikasyon işlemini senkron ve asenkron olarak ve yarı senkron olacak şekilde 3 şekilde yapabilir. Default olarak asenkron replikasyon yapılır.

Asenkron replikasyon

Master veritabanında transactionlar binary dosyalara yazılır ve slave requestler hazır olduklarında talep ederler. Yalnız bu yöntemde transactionın slave veritabanına ulaşabileceğinin garantisi yoktur. . (row-based replikasyon ve statement-based replikasyon yapma seçeneklerimiz var burada) Asenkron replikasyon avantajı slave veritabanına herhangi bir nedenden dolayı ulaşılamasa bile kullanıcılar veritabanında işlemi yapmaya devam edebilir dezavantajı ise replikasyonun sıfır veri kaybı garantisini verememesidir.

 

Mysql Master-Slave Replication 1

Yarı Senkron replikasyon

Transactionın doğru aktarılmasını sağlamak için slave ve master ünitenin birbirleriyle iletişim kurması anlamına gelir. Master yalnızca binlog dosyasını doldurur ve slavelerden biri transactionın slave’in relay loglarından birine düzgün bir şekilde yerleştirildiğinin doğrulanmasını sağlarsa transaction devam eder. Yarı eşzamanlı replikasyon, bir transactionın doğru şekilde kopyalandığını garanti eder, ancak slave üzerine olan taahhüdün gerçekten gerçekleşeceğini garanti etmez.

Mysql Master-Slave Replication 2

 

Senkron replikasyon

Master veritabanında bir transaction gerçekleştirildiğinde, tüm slave’lerde bu transaction işlenene kadar master transaction sonlanmaz.Bunun dezavantajı ise bir transactionı tamamlamak için çok fazla gecikme olabileceğidir.

Row-Based Replikasyon ve Statement-Based Replikasyon

Statement-based replikasyon ile SQL sorgusunun kendisi binary log dosyasına kaydedilir ve slave tarafından bu sql ler çalıştırılır.Bu sistemin birçok avantajı ve dezavantajı vardır:

  • Gerçek sorgular binary log dosyasına kaydedildiği için veritabanını denetlemek çok daha kolaydır
  • Network üzerinden daha az veri aktarılır

Row-based replikasyon defauly yöntemdir. Satır değişiklikleri binary log dosyalarına kaydedilir ve içerik bilgisi gerektirmez. Avantajları;

  • Birkaç satır değişikliği içeren yüksek eşzamanlılık sorgularıyla performans iyileştirmeleri
  • veri tutarlılığı geliştirme

Master –Slave Replikasyon Örneği

Şimdi biz bu yazıdaki örneğimizde asenkron master-slave replikasyon yapacağız. Öncelikle kullanacağımız ipler aşağıdaki gibidir;

Master Database : 192.168.10.130
Slave Database : 192.168.10.130

  • Eğer veritabanı bulunmuyorsa aşağıdaki gibi kurmamız gerekmektedir.

apt-get install mariadb-server -y


NOT :
MariaDB, GNU Genel Kamu Lisansı altında serbest olarak kullanılabilen, MySQL’in yaratıcısı olan Monty Widenius‘un MySQL’in kodunu çatallayıp (fork) “çoğunlukla” MySQL ile aynı komutları, arayüzleri ve API’leri destekleyecek şekilde geliştirmeye başlanan (MariaDB 5.2 >= MySQL 5.2), toplulukla iç içe hızlı ve verimli şekilde geliştirilmeye devam edilen MySQL ilişkisel veritabanı yönetim sistemidir. Tabi geliştirmelerle birlikte farklı yaklaşımlar da sürümlerle birlikte sunulmaya başlandı. Detaylı bir değerlendirme için MariaDB versus MySQL – Features sayfasını inceleyebilirsiniz.

  • Yükleme tamamlandıktan sonra, MariaDB servisini başlatmak ve aşağıdaki komutla önyükleme zamanında başlatmak için etkinleştirin;
systemctl start mysql
systemctl enable mysql
  • Aşağıda kodu verilen mysql_secure_installation scripti çalıştırarak güvenlik ayarlarını yapabiliriz.Scripti çalıştırdıktan sonra MySQL root şifresini değiştirmeyi, anonim hesabını kaldırmayı ve localhostun dışında root girişi yapılmamasını ve test veritabanını silmek isteyip istemediğinizi sorabilir.

 

mysql_secure_installation

Aşağıda gösterildiği gibi tüm soruları cevaplayın;

Set root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
    • Şimdi master sunucumuzda mysql yapılandırma dosyasını açıp /etc/mysql/my.cnf aşağıdaki satırları düzenleyelim;
    • bind-address : Belirli interfacelerin dinlenmesini sağlar. Birden fazla interface ekleyebiliriz. 192.168.1.1,10.0.0.1
    • server_id : Bu değişken sunucu kimliğini belirtir. server_id varsayılan olarak 1’e ayarlanmıştır. Replikasyon  topolojisinde kullanılan sunucular için, her replikasyon sunucusu için 1 – 232  aralığında benzersiz bir sunucu kimliği belirtmeniz gerekir.
    • log-basename : binary logun yerini belirtiriz
    • binlog-format : binary log formatını seçmemizi sağlayan parametre. STATEMENT, ROW ve MIXED değerlerini alabilir.
    • binlog-do-db : Replike edilecek veritabanını belirtir bunun yerine istersek binlog-ignore-db parametresi ile replike edilmeyecek veritabanlarınıda ayarlayabiliriz.
[mysqld]
bind-address = 192.168.10.130
server_id=1
log-basename=master
log-bin=/var/log/mysql/mariadb-bin
binlog-format=row
binlog-do-db=masterdb

(continue reading…)

Loading


MYSQL Depoloma Motorları(Storage Engine) ve Farkları

Depoloma motorları, MYSQL’DE farklı tablo türleri için SQL işlemlerini yürüten MYSQL bileşenleridir. InnoDB,  varsayılan ve en genel amaçlı depoloma motorudur. Oracle’da özel kullanım alanları dışında InnoDB kullanılmasını önerir. (MySQL 5.5’den itibaren varsayılan saklama motoru InnoDB’dir. Öncesinde varsayılan saklama motoru MyISAM’dır.)

Sunucunuuzn hangi depolama motorlarını desteklediğini belirlemek için SHOW ENGINES komutunu kullanabiliriz.

MSQL storage engine

 

 

 

Tabloda gördüğümüz gibi bir çıktı elde ederiz. Buradaki sütun adlarını inceleyecek olursak;

  • Engine : depolama motorunun adını içerir.
  • Support : sürücümüz üzerinde desteklenip desteklenmediği içerir.
  • Comment : depolama motoru hakkında kısa bir açıklama içerir.
  • Transactions : transaction yapısını destekleyip, desteklemediği bilgisini içerir.
  • XA : Koordinat tabanlı transaction işlemlerini destekleyip, desteklemediği bilgisini içerir.
  • Savepoints : Yapılan işlemlerin geri alınmasına (rollback) yönelik kayıt noktaları (savepoints) oluşturmayı destekleyip, desteklemediği bilgisini içerir.

Depolama motorları  belirli bir veritabanı tablosundan bilgi çekmeyi tabloda bilgi saklamayı ve tablodaki bilgiyi kontrol etmeyi sağlar.

MySQL sunucusunun mimarisi aşağıdaki şekilde verilmiştir. Verileri kalıcı olarak diske kaydeden, SQL sorgularını çalıştıran ve verileri diskten ya da bellekten derleyip getiren gerçekte depoloma motorlarıdır. Üstelik depoloma motorları eklenip çıkarılabilen bir yapıya sahiptir. MySQL için yazılmış özel kullanım alanları olan çok sayıda üçüncü parti depoloma motorları mevcuttur tokudb, aria.

MSQL depolama motoru

 

 

 

 

 

 

 

 

MySQL 5.7 desteklenen depolama motorları aşağıdaki gibidir.
(continue reading…)

Loading


  • Sertifikasyon



  • Etiketler

  • Topluluklar

                     
                     
  • Copyright © 1996-2010 Mustafa Bektaş Tepe. All rights reserved.
    Türkçeleştirme Blogizma | AltyapıWordPress