MySQL ileri düzey: performans, çoğaltma ve güvenlik
MySQL’de hızlı sorgu yazmayı, veriyi yedekleyip çoğaltmayı ve sunucuyu güvenli yapılandırmayı öğrenirsin.
Seviye 301 · 27 ders · 24 pratik lab
Dersler
Güçlü sorgular
- MySQL alt sorguları ve geçici tablolar: Bir sorgunun içine başka sorgu yazmayı ve yalnızca oturum boyunca yaşayan geçici tabloları kullanmayı öğrenirsin.
- MySQL’de CTE ve özyinelemeli sorgular: WITH ile uzun sorguyu okunur parçalara bölmeyi ve kurum şeması gibi üst-alt ilişkili verileri gezmeyi öğrenirsin.
- MySQL pencere fonksiyonları: Satırları birleştirmeden sıralama, sıra numarası ve birikimli toplam hesaplayarak oturum açma kayıtlarını çözümleyebileceksin.
- MySQL’de JSON verisi: JSON türünde sütun saklamayı, içinden değer çekmeyi ve JSON alanı üzerinde indeks mantığını kurmayı öğrenirsin.
- MySQL tam metin araması (FULLTEXT): Uzun metinlerde LIKE yerine FULLTEXT indeksiyle alaka sırasına göre hızlı arama yapabileceksin.
- Kısa görev: JSON ve pencere fonksiyonlarıyla ürün raporu
Performans
- MySQL indeksleri ve EXPLAIN ile sorgu planı: Bir indeksin sorguyu neden hızlandırdığını ve EXPLAIN çıktısında tablonun baştan sona okunup okunmadığını görebileceksin.
- Bileşik ve kapsayan indeksler: Birden çok sütunlu indekste sütun sırasının neden önemli olduğunu ve tabloya hiç dokunmayan sorguları öğrenirsin.
- Yavaş sorgu günlüğü ve sunucu ayarları: Yavaş sorgu günlüğünü açıp en yavaş sorguları bulmayı ve InnoDB bellek ayarlarını ölçerek değiştirmeyi öğrenirsin.
- MySQL bölümlendirme (partitioning): Çok büyük bir tabloyu tarihe göre parçalara bölmeyi ve eski parçayı hızla silmeyi öğrenirsin.
- Kısa görev: yavaş sorgu günlüğündeki ilk üç sorguyu hızlandır
Veritabanı içinde mantık
- MySQL görünümleri (view): Karmaşık sorguyu sanal bir tabloya çevirmeyi ve kullanıcıya yalnızca izin verilen sütunları göstermeyi öğrenirsin.
- Saklı yordamlar, fonksiyonlar ve hata yönetimi: Veritabanında yeniden kullanılabilir yordam ve fonksiyon yazmayı, hata olunca temiz biçimde durdurmayı öğrenirsin.
- Tetikleyiciler ve değişiklik izi: Bir satır değişince otomatik çalışan tetikleyiciyle kimin neyi ne zaman değiştirdiğini kayıt altına alabileceksin.
- MySQL olay zamanlayıcısı (Event Scheduler): Eski kayıtları temizlemek gibi işleri veritabanının kendi zamanlayıcısıyla düzenli çalıştırabileceksin.
- İşlemler, yalıtım düzeyleri ve kilitler: Aynı anda çalışan işlemlerin birbirini nasıl etkilediğini ve kilitlenmeyi (deadlock) nasıl çözeceğini öğrenirsin.
- Kısa görev: sipariş durumunu tetikleyiciyle izle
Operasyon: çoğaltma ve yedek
- MySQL çoğaltma (replication) temelleri: Verinin ikinci bir sunucuya otomatik kopyalanmasını kurmayı ve kopyanın geride kalıp kalmadığını denetlemeyi öğrenirsin.
- İkili günlük (binlog) ve belirli ana geri dönüş: Yanlışlıkla silinen veriyi, yedeğe ikili günlüğü ekleyerek istenen ana kadar geri getirebileceksin.
- Yedekleme stratejileri: mantıksal ve fiziksel yedek: mysqldump ile Percona XtraBackup arasındaki farkı bilip hangisinin ne zaman uygun olduğunu seçebileceksin.
- Veri içe ve dışa aktarma: LOAD DATA ve secure_file_priv: CSV dosyasını tabloya yüklemeyi, sonucu dosyaya yazmayı ve bu işi sınırlayan güvenlik ayarını doğru kullanmayı öğrenirsin.
- Kısa görev: silinen tabloyu belirli bir ana dönerek kurtar
Güvenlik
- Hesaplar, roller ve parola politikası: MySQL rolleriyle yetkiyi gruplamayı, validate_password ile zayıf parolayı engellemeyi ve hesap kilitlemeyi öğrenirsin.
- TLS bağlantısı ve tablo alanı şifreleme: İstemci ile sunucu arasındaki trafiği TLS ile, diskteki veriyi InnoDB şifrelemesiyle koruyabileceksin.
- MySQL denetim günlüğü: Kimin ne zaman bağlandığını ve hangi sorguyu çalıştırdığını denetim günlüğüyle kayıt altına alabileceksin.
- MySQL sertleştirme kontrol listesi: Dinlenen adresi, local_infile ayarını, kullanılmayan hesapları ve yetkileri sırayla gözden geçiren bir denetim listesi uygulayabileceksin.
- Bitirme görevi: bir MySQL sunucusunu hızlandır, yedekle ve sertleştir
Pratik lablar
- JSON sütunundan alan çek: Ürün özelliklerini tutan JSON sütunundan renk ve beden değerlerini sorguyla çıkar.
- JSON alanına oluşturulmuş sütunla indeks ekle: Sık aranan bir JSON alanı için oluşturulmuş sütun ve indeks ekleyip sorgunun hızlandığını göster.
- JSON dizisini satırlara aç: Siparişteki ürün dizisini JSON_TABLE ile satırlara açıp kategori başına satış raporu üret.
- Ürün açıklamalarında tam metin ara: FULLTEXT indeks ekleyip açıklamalarda iki kelimeyi birlikte geçiren ürünleri bul.
- Boolean modla arama sonuçlarını daralt: Defne Kitabevi araması için zorunlu, hariç ve öneki eşleşen kelimeleri boolean modla uygula.
- Kısa kelimeleri bulamayan aramayı düzelt: Üç harfli marka kodlarını bulamayan tam metin aramasının ayarını değiştirip indeksi yeniden kur.
- Günlük tablosunu aya göre böl: Erişim günlüğü tablosunu aylık aralık bölümlerine ayır ve bir sorgunun yalnız bir bölüme baktığını göster.
- Eski veriyi bölüm silerek temizle: Milyonlarca satırı DELETE ile silmek yerine eski ay bölümünü düşürüp süreyi karşılaştır.
- Bölümleme anahtarı hatasını düzelt: Sorguların hiçbir bölümü elemediği yanlış anahtarla bölünmüş tabloyu doğru anahtarla yeniden düzenle.
- Sipariş özeti döndüren yordam yaz: Müşteri numarası alıp sipariş sayısı ve toplamını döndüren bir saklı yordam yaz.
- Yordama hata yakalayıcı ekle: Stok yetersizse işlemi geri alıp anlamlı bir hata veren handler'lı yordam yaz.
- Tekrar eden mantığı fonksiyona taşı: Beş farklı sorguda kopyalanmış kargo ücreti hesabını deterministik bir fonksiyona taşı ve sonuçları doğrula.
- Fiyat değişikliğini tetikleyiciyle kaydet: Ürün fiyatı değiştiğinde eski ve yeni fiyatı geçmiş tablosuna yazan tetikleyici kur.
- Gece temizliğini Event Scheduler'a ver: Süresi dolan sepetleri her gece silen bir olay tanımla ve çalıştığını günlükten doğrula.
- Sonsuz tetikleme zincirini çöz: Birbirini güncelleyen iki tetikleyicinin yol açtığı hatayı bul ve mantığı tek yerde topla.
- CSV'yi LOAD DATA ile yükle: Tedarikçinin gönderdiği 100 bin satırlık CSV'yi LOAD DATA ile yükle ve hatalı satırları say.
- secure_file_priv engelini doğru aş: Dışa aktarma reddedilen sunucuda güvenliği gevşetmeden izinli dizine rapor yaz.
- Tarih biçimi farklı dosyayı dönüştürerek yükle: Gün/ay/yıl tarihli ve virgüllü ondalıklı dosyayı yükleme sırasında dönüştürerek doğru türlere aktar.
- İkili günlükteki olayları listele: Birkaç değişiklik yap ve mysqlbinlog ile bu değişikliklerin günlükteki karşılığını bul.
- Basit bir kopya sunucu kur: Raporlama için ikinci bir sunucuyu kopya olarak bağla ve ana sunucudaki yeni siparişin geldiğini doğrula.
- Yanlış UPDATE'ten önceki ana dön: Gece yedeğini yükle, ikili günlüğü hatalı UPDATE'in hemen öncesine kadar oynat ve fiyatları kurtar.
- Rollerle yetki ver: Okuyucu ve yazar rollerini oluşturup kullanıcılara ata ve varsayılan rolü etkinleştir.
- Bağlantıları TLS'e zorla: Uygulama hesabının yalnızca şifreli bağlantıyla girmesini sağla ve şifresiz denemenin reddedildiğini göster.
- Sunucuya sertleştirme denetimi yap: Parola politikası, gereksiz hesaplar, dosya izinleri ve denetim günlüğünü kontrol eden bir listeyle sunucuyu sertleştir.
Kurs hakkında
MySQL’de hızlı sorgu yazmayı, veriyi yedekleyip çoğaltmayı ve sunucuyu güvenli yapılandırmayı öğrenirsin.
Ne öğreneceksin
- Güçlü sorgular
- Performans
- Veritabanı içinde mantık
- Operasyon: çoğaltma ve yedek
- Güvenlik
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.