cPanel/WHM: MySQL/MariaDB Performans Optimizasyonu Rehberi
Web sitelerinin ve uygulamaların kalbi genellikle bir veritabanı sisteminde atar. cPanel veya WHM üzerinde barındırılan çoğu uygulama için bu kalp, MySQL veya MariaDB’dir. Veritabanı performansı, bir web sitesinin yüklenme hızından kullanıcı deneyimine, hatta SEO sıralamasına kadar her şeyi doğrudan etkiler. Ancak birçok sunucu yöneticisi veya webmaster, veritabanı sunucusunun varsayılan ayarlarına güvenmekle yetinir. Bu makalede, cPanel/WHM ortamında MySQL/MariaDB performansını nasıl optimize edebileceğinizi adım adım, teknik detaylarla ve pratik ipuçlarıyla ele alacağız.
Neden MySQL/MariaDB Optimizasyonu Kritik?
Bir cPanel/WHM sunucusunda barındırılan siteler genellikle çeşitli PHP uygulamaları (WordPress, Joomla, Magento vb.) kullanır ve bu uygulamalar yoğun bir şekilde veritabanına bağımlıdır. Yetersiz optimize edilmiş bir veritabanı, sunucu kaynaklarının (CPU, RAM, Disk I/O) gereksiz yere tüketilmesine, web sitelerinin yavaşlamasına ve hatta hizmet dışı kalmasına neden olabilir. Doğru optimizasyon ile aynı donanım üzerinde çok daha fazla trafiği ve daha karmaşık işlemleri sorunsuz bir şekilde yönetebilirsiniz.
Teknik Arka Plan: MySQL/MariaDB Nasıl Çalışır?
MySQL ve MariaDB, ilişkisel veritabanı yönetim sistemleridir (RDBMS). Verileri tablolar halinde düzenler, indeksler aracılığıyla hızlı arama ve sıralama sağlar. Performanslarını etkileyen başlıca faktörler şunlardır:
- Bellek Yönetimi: Veritabanı, sık erişilen verileri ve indeksleri bellekte (RAM) tutarak disk I/O’yu azaltmaya çalışır. Özellikle InnoDB tampon havuzu (
innodb_buffer_pool_size) ve anahtar tamponu (key_buffer_size) kritik öneme sahiptir. - Sorgu İşleme: Gelen sorguların nasıl işlendiği, önbelleğe alınıp alınmadığı (
query_cache_size) ve concurrent (eş zamanlı) bağlantı sayısı (max_connections) performansı doğrudan etkiler. - Disk I/O: Belleğe sığmayan veriler diske yazılır veya diskten okunur. Disk I/O, veritabanı performansının en büyük darboğazlarından biri olabilir.
- İşlemci Kullanımı: Karmaşık sorgular, sıralama ve birleştirme işlemleri işlemci yoğun olabilir.
Adım Adım Optimizasyon Rehberi
1. Mevcut Durum Analizi ve Performans Metrikleri
Optimizasyona başlamadan önce mevcut durumu anlamak çok önemlidir. WHM veya SSH üzerinden sunucunuza erişerek aşağıdaki araçları kullanabilirsiniz:
- WHM > MySQL Root Parolasını Değiştir: İlk olarak root parolanızı bildiğinizden emin olun.
- WHM > Service Status: MySQL servisinin durumunu ve kaynak kullanımını buradan takip edebilirsiniz.
- SSH ile
mysqltuner.plKullanımı: Bu popüler perl betiği, MySQL/MariaDB sunucunuzun mevcut ayarlarını analiz eder ve optimizasyon önerileri sunar.
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.plÇıktıyı dikkatlice inceleyin. Özellikle “Recommendations” (Öneriler) bölümü, hangi parametreleri ayarlamanız gerektiği konusunda size yol gösterecektir.
2. my.cnf Dosyasını Düzenleme
MySQL/MariaDB’nin ana yapılandırma dosyası my.cnf‘dir. cPanel/WHM sistemlerinde bu genellikle /etc/my.cnf konumunda bulunur. Düzenlemeleri yapmadan önce mutlaka yedeğini alın!
cp /etc/my.cnf /etc/my.cnf.yedekAşağıdaki parametreler en sık optimize edilenlerdir:
a. Bellek Ayarları
innodb_buffer_pool_size: InnoDB tabloları için en kritik ayardır. Veritabanınızın ve indekslerinizin büyük bir kısmını bellekte tutmak için sunucunuzdaki RAM’in %50-70’ini bu parametreye ayırabilirsiniz. Örneğin, 8GB RAM’i olan bir sunucuda 4G veya 6G olarak ayarlanabilir.key_buffer_size: MyISAM tablolarının indeksleri için kullanılır. Eğer siteleriniz ağırlıklı olarak InnoDB kullanıyorsa, bu değeri düşük tutabilirsiniz (örn. 128M).tmp_table_sizevemax_heap_table_size: Bellekte oluşturulabilecek geçici tabloların maksimum boyutunu belirler. Genellikle 64M-256M arası değerler uygun olabilir.
b. Bağlantı ve Sorgu Ayarları
max_connections: Sunucuya aynı anda bağlanabilecek maksimum bağlantı sayısını belirler. Sitenizin trafiğine göre ayarlanmalıdır. Çok yüksek bir değer, kaynak tükenmesine yol açabilir. mysqltuner size ideal bir değer önerecektir.query_cache_sizevequery_cache_limit: Sorgu önbelleği, aynı sorguların tekrar tekrar çalıştırılmasını engelleyerek performansı artırabilir. Ancak, çok sık veri değişimi olan sistemlerde performansı düşürebilir. MariaDB 10.1 ve MySQL 5.7.20’den itibaren bu özellik kullanımdan kaldırılmıştır (deprecate edildi). Daha yeni sürümlerde bu değeri 0 yapmanız önerilir. Eğer eski bir sürüm kullanıyorsanız, 16M-64M arası bir değer deneyebilirsiniz.thread_cache_size: Yeniden kullanılacak iş parçacıklarının önbellek boyutudur. mysqltuner çıktısına göre ayarlanabilir.wait_timeoutveinteractive_timeout: Bağlantıların ne kadar süre aktif kalacağını belirler. Genellikle 60-300 saniye arası değerler kullanılır. Çok yüksek değerler, kullanılmayan bağlantıların kaynakları meşgul etmesine neden olabilir.
c. Diğer Önemli Ayarlar
log_error: Hata günlük dosyasının yolunu belirler. Sorun giderme için çok önemlidir.slow_query_logvelong_query_time: Yavaş çalışan sorguları kaydetmek için kullanılır. Optimizasyon için vazgeçilmez bir araçtır.long_query_timegenellikle 1-5 saniye arasına ayarlanır.
Değişiklikleri yaptıktan sonra MySQL/MariaDB servisini yeniden başlatmayı unutmayın:
/scripts/restartsrv_mysql3. Tablo Optimizasyonu ve İndeksleme
- OPTIMIZE TABLE: Zamanla veritabanı tabloları parçalanabilir (fragmentation). Bu, diskte daha fazla yer kaplamalarına ve daha yavaş çalışmalarına neden olur. PHPMyAdmin üzerinden veya SSH ile
OPTIMIZE TABLE tabloadı;komutuyla tablolarınızı optimize edebilirsiniz. - Doğru İndeksleme: Sorgularınızda sıkça kullanılan sütunlara (özellikle WHERE, JOIN, ORDER BY clause’larındaki) indeks eklemek performansı dramatik şekilde artırır. Gereksiz indeksler ise yazma işlemlerini yavaşlatır. Veritabanı şemanızı ve sık kullanılan sorgularınızı analiz ederek doğru indeksleri oluşturun.
Güvenlik İpuçları
- Güçlü Parolalar: Tüm MySQL kullanıcıları için karmaşık ve uzun parolalar kullanın.
- Uzak Erişim Kısıtlaması: Mümkünse, MySQL sunucusuna sadece localhost’tan veya belirli güvenilir IP adreslerinden erişime izin verin. cPanel’de bu ayarı
WHM > SQL Services > Additional MySQL Access Hostsüzerinden yapabilirsiniz. - En Az Yetki Prensibi: Uygulama kullanıcılarına sadece ihtiyaç duydukları veritabanlarına ve işlemlere (SELECT, INSERT, UPDATE, DELETE) erişim yetkisi verin. ASLA bir web uygulamasına root yetkisi vermeyin.
- Güncel Kalın: MySQL/MariaDB sürümlerini ve cPanel/WHM’i düzenli olarak güncelleyerek bilinen güvenlik açıklarını kapatın.
Performans Optimizasyonları ve Sorun Giderme
Sorgu Optimizasyonu
En büyük performans kazançları genellikle kötü yazılmış sorguları optimize etmekten gelir. Yavaş sorgu loglarını (slow_query_log) inceleyerek darboğazları tespit edin ve EXPLAIN komutunu kullanarak sorguların nasıl yürütüldüğünü analiz edin. İndeks kullanımı, JOIN tipleri ve sıralama algoritmaları sorgu performansını doğrudan etkiler.
Donanım İpuçları
Bazı durumlarda yazılım optimizasyonları yeterli olmayabilir. Özellikle yüksek trafikli siteler için hızlı SSD diskler (NVMe tercih edilir), yeterli RAM ve güçlü bir işlemci kritik öneme sahiptir. Disk I/O, veritabanı performansının en sık rastlanan darboğazıdır.
Olası Hata Çözümleri (Troubleshooting)
- MySQL Servisi Başlamıyor: Genellikle
my.cnfdosyasındaki bir yazım hatası veya yanlış bir parametre değeri neden olur. Hata loglarını (log_errorile belirtilen dosya) kontrol edin. Eskimy.cnfyedeğinizi geri yüklemeyi deneyin. - Bağlantı Hataları:
max_connectionsdeğerinin çok düşük olması veya sunucunun kaynaklarının tükenmesi bağlantı hatalarına yol açabilir. WHM’deki servis durumunu ve/var/log/messagesveya/var/log/mysql/mysqld.loggibi log dosyalarını kontrol edin. - Kaynak Tüketimi (CPU/RAM): Yavaş sorgular, yetersiz bellek ayarları veya aşırı bağlantı sayısı kaynak tüketimine neden olabilir.
top,htopveyafree -mgibi komutlarla sunucu kaynaklarını izleyin vemysqltuner‘ın önerilerini tekrar gözden geçirin.
MySQL/MariaDB optimizasyonu, tek seferlik bir işlemden ziyade sürekli bir süreçtir. Web sitenizin veya uygulamanızın büyümesiyle birlikte, veritabanı kullanım modelleri de değişecektir. Bu nedenle, düzenli aralıklarla performans metriklerini izlemek, mysqltuner gibi araçları çalıştırmak ve my.cnf ayarlarınızı gözden geçirmek, sunucunuzun her zaman en iyi performansı sunmasını sağlayacaktır. Özellikle cPanel/WHM gibi yönetilen ortamlarda, bu tür derinlemesine optimizasyonlar, sunucunun genel sağlığı ve sitelerinizin hızı için hayati öneme sahiptir. Unutmayın ki, hızlı bir veritabanı, mutlu kullanıcılar ve daha iyi bir çevrimiçi varlık demektir.

