Ubuntu Sunucuda MySQL Tuning

Ubuntu sunucularında MySQL veritabanı sunucusunu optimize etmek, yüksek trafikli web uygulamaları veya kurumsal veri işleme sistemleri için kritik öneme sahiptir.

Ubuntu sunucularında MySQL veritabanı sunucusunu optimize etmek, yüksek trafikli web uygulamaları veya kurumsal veri işleme sistemleri için kritik öneme sahiptir. Varsayılan MySQL konfigürasyonu, genel kullanım için tasarlanmış olup, üretim ortamlarında performans darboğazlarına yol açabilir. Bu makalede, Ubuntu işletim sisteminde MySQL’in (sürüm 8.0 ve üzeri varsayılarak) tuning işlemlerini adım adım ele alacağız. Tuning süreci, sunucu kaynaklarını (RAM, CPU, disk I/O) etkili kullanmayı hedefler ve %30-50 oranında sorgu hızı artışı sağlayabilir. Öncelikle, sunucunuzun mevcut yükünü değerlendirin: mysql -u root -p ile bağlanarak SHOW GLOBAL STATUS; komutunu çalıştırın. Bu, bağlantı sayısı, sorgu istatistikleri gibi verileri verir. Ardından, konfigürasyon dosyasını düzenleyerek başlayacağız. Tüm değişikliklerden önce veritabanı yedeği alın ve test ortamında doğrulayın.

MySQL Konfigürasyon Dosyasını Düzenleme

Ubuntu’da MySQL konfigürasyonu, /etc/mysql/mysql.conf.d/mysqld.cnf dosyasında yapılır. Bu dosya, ana ayarları barındırır ve [mysqld] bölümünde düzenlenir. Değişiklik yapmadan önce mevcut ayarları inceleyin: sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf. Düzenlemeler sonrası sudo systemctl restart mysql ile yeniden başlatın ve hataları sudo journalctl -u mysql ile kontrol edin. Bu yaklaşım, kesintisiz tuning sağlar.

İlk adımda, dosyanın sonuna [mysqld] bloğu ekleyin veya mevcut olanı genişletin. Sunucu RAM’inizi free -h ile belirleyin; örneğin 8 GB RAM için buffer havuzu %70 oranında ayarlanır. Tuning’i aşamalı yapın: Temel parametreleri değiştirin, performansı ölçün, sonra gelişmişlere geçin. Bu yöntem, olası sorunları minimize eder ve sistem kararlılığını korur.

  • Dosya yedeği: sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak
  • MySQL yeniden başlatma: sudo systemctl restart mysql
  • Durum kontrolü: sudo systemctl status mysql

Ana Performans Parametreleri

InnoDB Buffer Pool Boyutu

InnoDB buffer pool, en kritik parametredir ve tablolar ile indeksleri RAM’de tutar. Varsayılan 128 MB yetersizdir; sunucu RAM’inin %60-80’ini ayırın. 16 GB RAM’li sunucuda innodb_buffer_pool_size = 12G ayarlayın. Bu, disk okuma/yazma trafiğini azaltır ve sorguları hızlandırır. Değişikliği cnf dosyasına ekleyin, MySQL’i yeniden başlatın. Etkiyi ölçmek için SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_%'; kullanın; hit oranı %95 üzeri olmalı. Düşükse boyutu artırın, ancak OS için %20 RAM bırakın.

Bağlantı ve Thread Ayarları

max_connections varsayılan 151’dir; yüksek trafik için 500-1000’e çıkarın. thread_cache_size ile yeniden thread oluşturmayı önleyin, bağlantı sayısının %10’u kadar ayarlayın. Örnek: 500 bağlantı için thread_cache_size = 50. table_open_cache = 2000 ile açık tablo sayısını artırın. Bu ayarlar, CPU yükünü dengeler. Uygulamadan önce SHOW PROCESSLIST; ile mevcut bağlantıları izleyin ve peak saatlerde test edin. Aşırı artış bellek sızıntısına yol açabilir, bu yüzden adım adım yükseltin.

Log ve Flush Ayarları

innodb_log_file_size = 1G (RAM’in %25’i kadar) ile transaction log boyutunu optimize edin; bu, checkpoint sıklığını azaltır. innodb_flush_log_at_trx_commit = 2 ile crash-recovery’yi hızlandırın (1 tam ACID, 2 saniyede bir flush). Yeniden boyutlandırma için log dosyalarını silin: sudo rm /var/lib/mysql/ib_logfile* sonra restart. Bu değişiklikler, yazma yoğun uygulamalarda I/O’yu %40 azaltır. Performansı SHOW ENGINE INNODB STATUS; ile doğrulayın.

Performans İzleme ve Sürekli Optimizasyon

Tuning sonrası izleme şarttır. MySQL’in yerleşik araçlarını kullanın: mysqladmin extended-status ile uptime, questions gibi metrikleri takip edin. Üçüncü parti araç olarak Percona Toolkit’ten mysql tuner script’ini indirin: wget http://www.mysqltuner.pl -O mysqltuner.pl; perl mysqltuner.pl. Bu script, önerileri verir; örneğin buffer hit oranını analiz eder. Haftalık çalıştırın ve raporlara göre ayarlayın.

Pratik adımlar için cron job ekleyin: crontab -e ile 0 2 * * 0 /usr/local/bin/mysqltuner.pl --email [email protected]. Slow query log’u etkinleştirin: slow_query_log = 1 ve long_query_time = 2. Logları /var/log/mysql/mysql-slow.log‘da inceleyin, EXPLAIN ile sorguları optimize edin. Sunucu yükü arttıkça, bu döngüyü sürdürün; tuning statik değil, dinamiktir.

Sonuç olarak, Ubuntu sunucuda MySQL tuning, sistem kaynaklarını verimli kılarak ölçeklenebilirlik sağlar. Yukarıdaki adımları uygulayarak, üretim ortamınızda belirgin iyileşmeler gözlemleyeceksiniz. Düzenli izleme ve testlerle konfigürasyonu güncel tutun; bu, kurumsal düzeyde güvenilirlik ve performansın anahtarıdır. Her sunucu benzersizdir, kendi verilerinize göre uyarlayın.

Kategori: Blog
Yazar: Editör
İçerik: 549 kelime
Okuma Süresi: 4 dakika
Zaman: Bugün
Yayım: 03-03-2026
Güncelleme: 03-03-2026
Benzer Hizmetler
Blog kategorisinden ilginize çekebilecek benzer hizmetler