MySQL Veritabanı Yönetimi Rehberi

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....

Programlar
MySQL Veritabanı Yönetimi Rehberi

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.

Celil Uyanikoglu

Yazan Celil Uyanikoglu

25 yıldır bilgi işlem piyasasında farklı dallarda uzmanlaşan bir Bilgisayar Mühendisi

Yorum

Henüz yorum yok.

Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.

Yorum yap

E-posta adresin yayınlanmaz. Yorumlar moderasyondan sonra yayınlanır.

Sırada

İlgili notlar