15 Faydalı MySQL/MariaDB Performans Ayarlama ve Optimizasyon İpuçları


MySQL güçlü bir açık kaynaklı İlişkisel Veritabanı Yönetim Sistemi veya kısaca RDBMS'dir. 1995'te (20 yaşında) piyasaya sürüldü. Bir veritabanındaki içeriği yönetmek için muhtemelen en popüler seçim olan Yapılandırılmış Sorgu Dili'ni kullanır. En son MySQL sürümü 5.6.25'tir ve 29 Mayıs 2015'te yayımlanmıştır.

MySQL ile ilgili ilginç bir gerçek, adın Michael Widenius'un (MySQL'in yaratıcısı) kızı My'den gelmesidir. MySQL hakkında birçok ilginç gerçek olmasına rağmen, bu makalenin amacı MySQL sunucunuzu yönetmenize yardımcı olacak bazı yararlı uygulamaları göstermektir.

Nisan 2009'da MySQL projesi Oracle tarafından satın alındı. Sonuç olarak MariaDB adında bir MySQL topluluk çatalı oluşturuldu. Çatalın oluşturulmasının ana nedeni, projenin Genel Kamu Lisansı altında ücretsiz kalmasını sağlamaktı.

Bugün MySQL ve MariaDB, WordPress, gibi web uygulamaları için kullanılan (en çok olmasa da) en sık kullanılan RDBMS'lerden biridir. Joomla, Magento ve diğerleri.

Bu makale size MySQL/MariaDB performansının ince ayarını nasıl optimize edebileceğiniz bazı temel ama yararlı ipuçları gösterecektir. Lütfen bu makalenin, MySQL veya MariaDB'nin zaten kurulu olduğunu varsaydığını unutmayın. Hala bunları sisteminize nasıl kuracağınızı merak ediyorsanız, kapsamlı kılavuzlarımızı buradan takip edebilirsiniz:

  1. LAMP'ı RHEL/CentOS 7'ye yükleme
  2. Fedora 22'ye LAMP Kurulumu
  3. Ubuntu 15.04'te LAMP Kurulumu
  4. Debian 8'e MariaDB Kurulumu
  5. MariaDB'yi Gentoo Linux'a yükleyin
  6. MariaDB'yi Arch Linux'a yükleyin

Önemli: Başlamadan önce – bu önerileri körü körüne kabul etmeyin. Her MySQL kurulumu benzersizdir ve herhangi bir değişiklik yapmadan önce ek düşünme gerektirir.

Bilmeniz gerekenler:

  1. MySQL/MariaDB yapılandırma dosyası /etc/my.cnf konumunda bulunur. Bu dosyayı her değiştirdiğinizde, yeni değişikliklerin etkili olabilmesi için MySQL hizmetini yeniden başlatmanız gerekecektir.
  2. Bu makalenin yazılmasında şablon olarak MySQL 5.6 sürümü kullanıldı.

1. Tablo başına InnoDB dosyasını etkinleştirin

Öncelikle InnoDB'nin bir depolama motoru olduğunu açıklamak önemlidir. MySQL ve MariaDB, InnoDB'yi varsayılan depolama motoru olarak kullanır. Geçmişte MySQL, veritabanı tablolarını ve dizinlerini bir sistem tablo alanında tutuyordu. Bu yaklaşım, tek amacı veri tabanı işleme olan ve depolama diskleri başka amaçlarla kullanılmayan sunucular için tasarlanmıştır.

InnoDB daha esnek bir yaklaşım sağlar ve her veritabanı bilgisi bir .ibd veri dosyasında tutulur. Her .ibd dosyası kendine ait bir tablo alanını temsil eder. Bu şekilde "TRUNCATE" gibi veritabanı işlemleri daha hızlı tamamlanabilir ve ayrıca bir veritabanı tablosunu bırakırken veya keserken kullanılmayan alanı geri kazanabilirsiniz.

Bu konfigürasyonun bir diğer faydası da bazı veritabanı tablolarını ayrı bir depolama cihazında tutabilmenizdir. Bu, disklerinizdeki G/Ç yükünü büyük ölçüde artırabilir.

innodb_file_per_table, MySQL 5.6 ve üzeri sürümlerde varsayılan olarak etkindir. Bunu /etc/my.cnf dosyasında görebilirsiniz. Direktif şuna benzer:

innodb_file_per_table=1

2. MySQL Veritabanı Verilerini Ayrı Bölümde Depolayın

Not: Bu kurulum yalnızca MySQL ile çalışır, MariaDB ile çalışmaz.

Bazen işletim sistemi okuma/yazma işlemleri, özellikle aynı sabit sürücüde bulunuyorsa MySQL sunucunuzun performansını yavaşlatabilir. Bunun yerine MySQL hizmeti için ayrı bir sabit disk (tercihen SSD) kullanmanızı öneririm.

Bunu tamamlamak için yeni sürücüyü bilgisayarınıza/sunucunuza bağlamanız gerekecektir. Bu makalenin amacı doğrultusunda sürücünün /dev/sdb altında olacağını varsayacağım.

Bir sonraki adım yeni sürücüyü hazırlamaktır:

fdisk /dev/sdb

Şimdi yeni bölüm oluşturmak için “n ” tuşuna basın. Daha sonra yeni bölümü birincil yapmak için “p ” tuşuna basın. Bundan sonra bölüm numarasını 1-4 olarak ayarlayın. Bundan sonra bölüm boyutunu seçeceksiniz. Burada enter'a basın. Bir sonraki adımda bölümün boyutunu yapılandırmanız gerekecektir.

Diskin tamamını kullanmak istiyorsanız bir kez daha enter tuşuna basın. Aksi takdirde yeni bölümün boyutunu manuel olarak ayarlayabilirsiniz. Hazır olduğunuzda değişiklikleri yazmak için “w ” tuşuna basın. Şimdi yeni bölümümüz için bir dosya sistemi oluşturmamız gerekecek. Bu, aşağıdakilerle kolayca yapılabilir:

mkfs.ext4 /dev/sdb1

Şimdi yeni bölümümüzü bir klasöre yerleştireceğiz. Klasörüme “ssd” adını verdim ve kök dizinde oluşturdum:

mkdir /ssd/

Az önce oluşturduğumuz yeni bölümü yeni klasöre monte etmeye hazırız:

mount /dev/sdb1  /ssd/

/etc/fstab dosyasına aşağıdaki satırı ekleyerek başlangıçta bağlama işlemini gerçekleştirebilirsiniz.

/dev/sdb1 /ssd ext3 defaults 0 0

Artık MySQL'i yeni diske taşımaya hazırsınız. İlk önce MySQL hizmetini şununla durdurun:

service mysqld stop

Veritabanlarına yazma girişimlerini önlemek için Apache/nginx'i de durdurmanızı tavsiye ederim:

service httpd stop
service nginx stop

Şimdi MySQL dizininin tamamını yeni sürücüye kopyalayın:

cp /var/lib/mysql /ssd/ -Rp

Bu, MySQL veritabanlarınızın sitesine bağlı olarak biraz zaman alabilir. Bu işlem tamamlandıktan sonra MySQL dizinini yeniden adlandırın:

mv /var/lib/mysql /var/lib/mysql-backup

Daha sonra bir sembolik bağlantı oluşturacağız.

ln -s /ssd/mysql /var/lib/mysql

Artık MySQL'inizi ve web hizmetinizi başlatmaya hazırsınız:

service mysqld start
service httpd start
service nginx start

Bu noktada MySQL veritabanlarınıza yeni sürücüden erişilecektir.