MySQL, dünyanın en popüler açık kaynak veritabanı yönetim sistemidir. Web uygulamalarından kurumsal sistemlere kadar geniş kullanım alanına sahip. Bu rehberde MySQL kurulumundan optimizasyonuna tüm yönetim süreçlerini öğreneceksiniz.
MySQL Nedir?
MySQL, ilişkisel veritabanı yönetim sistemidir (RDBMS). SQL (Structured Query Language) kullanarak veri depolar ve yönetir.
Neden MySQL:
- Açık kaynak ve ücretsiz
- Yüksek performans
- Güvenilirlik
- Geniş topluluk desteği
- Cross-platform çalışır
- WordPress, Drupal gibi sistemlerin altyapısı
MySQL Kurulumu
Linux (Ubuntu/Debian)
sudo apt update sudo apt install mysql-server sudo mysql_secure_installation
Windows
MySQL Installer indirin (dev.mysql.com) Custom veya Developer Default seçin Root şifrenizi belirleyin Servisi başlatın
İlk Yapılandırma
Güvenlik script'ini çalıştırın:
- Root şifresi belirleme
- Anonim kullanıcıları kaldırma
- Uzaktan root erişimini engelleme
- Test veritabanını silme
Temel Yönetim Komutları
Bağlantı ve Kullanıcı
mysql -u root -p # Bağlan CREATE USER 'kullanici'@'localhost' IDENTIFIED BY 'sifre'; GRANT ALL PRIVILEGES ON veritabani.* TO 'kullanici'@'localhost'; FLUSH PRIVILEGES;
Veritabanı İşlemleri
SHOW DATABASES; # Veritabanlarını listele CREATE DATABASE veritabani; # Oluştur USE veritabani; # Seç DROP DATABASE veritabani; # Sil
Tablo İşlemleri
SHOW TABLES; # Tabloları listele DESCRIBE tablo; # Tablo yapısını göster CREATE TABLE kullanicilar ( id INT AUTO_INCREMENT PRIMARY KEY, ad VARCHAR(100), email VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
Performans Optimizasyonu
MySQL performans optimizasyonu kritik öneme sahip. Yüksek trafikli siteler için doğru yapılandırma şart.
my.cnf Yapılandırması
Temel parametreler:
innodb_buffer_pool_size
En önemli parametre. InnoDB verilerini ve indekslerini bellekte tutar. Önerilen: Toplam RAM'in %50-70'i Örnek: 8GB RAM için 4G-5G
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances
Buffer pool'u parçalara böler, eşzamanlılığı artırır. Önerilen: CPU core sayısının yarısı
innodb_buffer_pool_instances = 4
innodb_log_file_size
Yazma yoğun sistemler için önemli. Önerilen: 64M - 512M
innodb_log_file_size = 256M
max_connections
Eşzamanlı bağlantı sayısı. Varsayılan 151, ihtiyaca göre artırın.
max_connections = 200
query_cache_size (MySQL 5.7 ve öncesi)
Sorgu önbelleği. MySQL 8.0'da kaldırıldı.
query_cache_size = 64M query_cache_type = 1
İndeksleme
İyi tasarlanmış indeksler sorgu hızını önemli ölçüde artırır.
Ne Zaman İndeks Kullanmalı
WHERE koşullarında sık kullanılan sütunlar JOIN operasyonlarındaki sütunlar ORDER BY sütunları GROUP BY sütunları
İndeks Oluşturma
CREATE INDEX idx_email ON kullanicilar(email); CREATE INDEX idx_ad_soyad ON kullanicilar(ad, soyad); # Composite
İndeks Kuralları
Çok fazla indeks yazmayı yavaşlatır Düşük kardinalite sütunlarında etkisiz (cinsiyet gibi) Composite indekslerde sıra önemli EXPLAIN ile kontrol edin
Sorgu Optimizasyonu
Yavaş sorgular en sık karşılaşılan performans sorunu.
EXPLAIN Kullanımı
EXPLAIN SELECT * FROM siparisler WHERE kullanici_id = 123;
EXPLAIN çıktısını analiz edin:
- type: Tarama türü (ALL kötü, ref/eq_ref iyi)
- key: Kullanılan indeks
- rows: Taranan satır sayısı
Sorgu İyileştirme
SELECT * yerine gerekli sütunları seçin WHERE koşullarında indeksli sütunlar kullanın LIKE '%kelime' indeks kullanamaz OR yerine IN tercih edin Alt sorgu yerine JOIN düşünün
Slow Query Log
Yavaş sorguları kaydetme:
slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2
Yedekleme
Düzenli yedekleme veri güvenliği için şart.
mysqldump
En yaygın yedekleme yöntemi:
Tek veritabanı mysqldump -u root -p veritabani > yedek.sql
Tüm veritabanları mysqldump -u root -p --all-databases > tum_yedek.sql
Sıkıştırılmış mysqldump -u root -p veritabani | gzip > yedek.sql.gz
Geri Yükleme
mysql -u root -p veritabani < yedek.sql
Sıkıştırılmış gunzip < yedek.sql.gz | mysql -u root -p veritabani
Yedekleme Stratejisi
Günlük tam yedek veya Haftalık tam + günlük incremental Yedeği farklı sunucuya/buluta kopyalayın Düzenli geri yükleme testi yapın
Replikasyon
Yük dengeleme ve yüksek erişilebilirlik için.
Master-Slave Replikasyon
Master: Yazma işlemleri Slave: Okuma işlemleri
Faydaları:
- Okuma yükünü dağıtma
- Yedekleme için slave kullanma
- Yüksek erişilebilirlik
Master-Master Replikasyon
Her iki sunucu da yazma alabilir. Daha karmaşık, dikkatli konfigürasyon gerekli.
Güvenlik
Kullanıcı Yönetimi
Her uygulama için ayrı kullanıcı Minimum yetki prensibi Root'u uzaktan erişime kapatın Güçlü şifreler kullanın
Ağ Güvenliği
Sadece gerekli IP'lere izin verin Firewall yapılandırın SSL/TLS bağlantı kullanın
bind-address = 127.0.0.1 # Sadece localhost
Veri Güvenliği
Hassas verileri şifreleyin Düzenli güvenlik güncellemeleri Audit log tutun
İzleme Araçları
MySQLTuner
Yapılandırma analizi yapan Perl script'i:
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl perl mysqltuner.pl
Optimizasyon önerileri sunar.
Percona Toolkit
Komut satırı araç seti:
- pt-query-digest: Yavaş sorgu analizi
- pt-online-schema-change: Kesintisiz şema değişikliği
- pt-table-checksum: Replikasyon doğrulama
MySQL Workbench
Grafik arayüzlü yönetim aracı:
- Veritabanı tasarımı
- Sorgu geliştirme
- Performans izleme
- Yönetim işlemleri
Sık Yapılan Hatalar
Yetersiz Buffer Pool
innodb_buffer_pool_size çok düşük. RAM'in yarısını verin.
İndeks Eksikliği
WHERE ve JOIN sütunlarını indeksleyin. EXPLAIN ile kontrol edin.
SELECT *
Gereksiz veri çekmeyin. Sadece ihtiyacınız olan sütunları seçin.
Yedekleme Yapmamak
Yedeksiz sistem felaket. Düzenli ve test edilmiş yedekler şart.
Root Kullanımı
Her işlem için root kullanmayın. Uygulama için ayrı kullanıcı oluşturun.
Proaktif Yaklaşım
Sorunları önlemek için:
- Düzenli performans izleme
- Metrik analizi
- Güvenlik taramaları
- Yedekleme testleri
- Yazılım güncellemeleri
- Güvenlik yamaları
MySQL 8.0 Yenilikleri
2025-2026 için MySQL 8.0+ özellikleri:
- Gelişmiş JSON desteği
- Window functions
- CTE (Common Table Expressions)
- Invisible indexes
- Descending indexes
- Atomik DDL
- Data dictionary
- Improved security
MySQL Yönetim Kontrol Listesi
- Güvenli kurulum yapıldı
- Buffer pool boyutu ayarlandı
- Kritik sütunlar indekslendi
- Slow query log aktif
- Otomatik yedekleme kuruldu
- Kullanıcı yetkileri düzenlendi
- Ağ güvenliği yapılandırıldı
- İzleme araçları kurulu
Sonuç
MySQL yönetimi sürekli bir süreçtir. Kurulum sadece başlangıç. Performans optimizasyonu, güvenlik ve yedekleme kritik.
Buffer pool ve indeksleme performansın temelidir. Slow query log ile sorunlu sorguları tespit edin.
Düzenli yedekleme ve izleme alışkanlığı edinin. Proaktif yaklaşım, sorunları büyümeden çözer.
Henüz yorum yok.
Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.