Bu rehber neyi çözer?
MariaDB MySQL kökenli olsa da bağımsız gelişen bir platformdur. Üretimde sürüm uyumluluğu, InnoDB workload’u, Galera gereksinimi ve güvenlik/encryption seçenekleri ayrı değerlendirilmelidir.
İşletim sistemi
MariaDB Linux dağıtımlarında apt/dnf/yum paketleriyle yaygın kullanılır; Windows paketleri de mevcuttur.
Linux üzerinde SELinux/AppArmor, filesystem ve systemd entegrasyonu operasyon standardına dahil edilmelidir.
CPU, RAM ve storage
InnoDB ağırlıklı sistemlerde RAM/buffer pool ve düşük latency storage performansın temelidir. CPU seçimi concurrency ve query complexity’ye göre yapılmalıdır.
Enterprise SSD/NVMe, güvenli write cache ve ölçülmüş IOPS/latency kritik transaction sistemlerinde önemlidir.
TLS ve encryption
MariaDB TLS ile data-in-transit şifreleme ve plugin tabanlı data-at-rest encryption seçenekleri sağlar. MariaDB 11.4 ve sonrası secure connections davranışında önemli iyileştirmeler sunar.
Kullanılan TLS library ve key management modeli güvenlik standardıyla uyumlu olmalıdır.
Yetki ve OS güvenliği
Database process root olarak çalıştırılmamalı; least privilege database users, network segmentasyonu ve güçlü credential politikaları uygulanmalıdır.
SELinux politikaları kapatılmak yerine doğru şekilde yapılandırılmalıdır.
HA ve Galera
Asenkron replication klasik read/DR senaryolarında; Galera Cluster multi-primary/synchronous yaklaşım gereken belirli HA modellerinde değerlendirilebilir.
Galera latency ve write workload karakteristiğine hassastır; coğrafi uzaklık ve conflict oranı pilot test gerektirir.
Sık Sorulan Sorular
MariaDB MySQL ile tamamen aynı mı?
Hayır. Kökenleri ortak olsa da özellik ve sürüm davranışları zaman içinde ayrışmıştır; migration test edilmelidir.
MariaDB’de TLS varsayılan mı?
Sürüm davranışı değişir; 11.4+ secure connection modelinde iyileştirmeler vardır. Kurulumda aktif TLS durumu mutlaka doğrulanmalıdır.
Galera her HA senaryosu için uygun mu?
Hayır. Write latency, conflict ve node arası gecikme modele uygun olmalıdır.
Veritabanı Altyapınızı Birlikte Değerlendirelim
Workload, güvenlik, donanım, HA ve yedekleme gereksinimlerinize göre altyapıyı birlikte planlayabiliriz.
Mimari ve çalışma modeli
MariaDB ve MySQL yakın geçmiş paylaşır fakat sürüm, optimizer, authentication, GTID ve storage engine davranışları eşit varsayılmamalıdır. Uygulama sürücüsü ve migration yöntemi desteklenmelidir. InnoDB belleği, binary log ve replication bağımlılıkları işletim planında ayrı izlenir. Galera tabanlı cluster, bağımsız backup ihtiyacını ortadan kaldırmaz.
- 1Sürüm ve uygulama uyumu
- 2InnoDB/sorgu
- 3Binlog/replication
- 4Geçiş ve restore
Tasarım parametreleri
- Engine ve sürüm uyumu
- Storage engine ve sürüm farklarını doğrulayın; MySQL uyumluluğu her özellik ve upgrade için birebir değildir.
- Replica ve backup
- Asenkron replication ile cluster seçeneklerinin commit/failover davranışını ayrı değerlendirin.
- İş yükü ve sorgu dağılımı
- Okuma/yazma oranı, bağlantı sayısı, transaction süresi ve yoğun sorguları ölçün. Veritabanı boyutu tek başına donanım gereksinimini açıklamaz.
- Bellek ve depolama
- Çalışma kümesi, günlük yazması, geçici alan ve checkpoint davranışını ayrı inceleyin. Güvenilir yazma garantisi performans kadar önemlidir.
- Kurtarma zinciri
- Başlangıç yedeği, gerekli günlükler, yapılandırma ve anahtarların birlikte geri getirilebildiğini sınayın.
- Erişim ve değişiklik
- Uygulama rolü, yönetici rolü ve schema değişiklik yetkisini ayırın. Üretimde indeks veya parametre değişimini kontrollü yapın.
Hesap ve uygulama örneği
Örnek geçişte schema, charset/collation, stored procedure ve temsilî sorgu planlarını karşılaştırın. Mantıksal kopyanın açılması uygulama uyumunu tek başına kanıtlamaz. Yoğun yazmada replication/cluster beklemesi ve restore süresi ayrı ölçülmelidir.
Hata teşhisi
| Belirti | Olası neden / ayrım | Doğrulama |
|---|---|---|
| Upgrade sonrası sorgu davranışı farklı | SQL mode, optimizer veya destek farkı olabilir. | Temsilî sorgu sonuçlarını ve planlarını önce/sonra karşılaştırın. |
| CPU düşük, sorgu yavaş | Kilit, I/O veya istemci beklemesi baskın olabilir. | Yürütme planını ve bekleme türünü aynı sorgu için inceleyin. |
| Replica bağlı ama verisi eski | Gönderme, uygulama veya transaction beklemesi gerilik yaratabilir. | Son uygulanmış işlem ve kaynağın commit zamanını karşılaştırın. |
| Disk sürekli büyüyor | Günlük tutma, açık transaction, replication slot veya bakım ihtiyacı etkili olabilir. | Ürünün desteklediği istatistikleri inceleyin; günlükleri elle silmeyin. |
Kabul ve doğrulama kontrolleri
- MySQLden geçişte fonksiyon, auth ve GTID uyumunu kullanılan sürümler için doğrulayın.
- Temsilî transactionları ve sorguları gerçek veri dağılımıyla test edin.
- Ayrı hedefe restore yapıp uygulama kayıtlarını doğrulayın.
- Yetkisiz okuma ve schema değişikliği denemelerini test kimliğiyle reddedin.
- Failover sonrasında tek yetkili yazıcı ve doğru bağlantı hedefini doğrulayın.
- Bakım sırasında kilit, günlük hacmi ve gecikme değişimini ölçün.
İlgili kavramlar
Transaction sınırı
Transaction, uygulamanın belirli işlemleri birlikte başarılı veya başarısız kabul ettiği mantıksal birimdir. Veritabanı içindeki atomiklik, e-posta gönderimi veya farklı servislerdeki değişikliklerin otomatik olarak aynı atomik kapsamda olduğu anlamına gelmez. Commit noktası ve hata sonrasında tekrar denemenin davranışı açık olmalıdır. Aynı isteğin iki kez işlenmesini önlemek için idempotency gereksinimini değerlendirin. Testte ağ kesintisi ve bağlantı kopmasını commit öncesi ve sonrasında ayrı uygulayın; istemcinin hata alması işlemin kesinlikle başarısız olduğu anlamına gelmeyebilir.
İşlem günlüğü ve recovery zinciri
WAL, redo veya transaction log gibi mekanizmalar, veri değişikliklerinin kalıcılaştırılması ve kurtarılması için sıralı kayıt tutar; ürünler arasında ayrıntılar farklıdır. Veri dosyası kopyası ile işlem günlüklerinin zamanı ve zinciri uyumlu olmalıdır. Günlüklerin bulunması tek başına belirli bir zamana dönülebileceğini kanıtlamaz: başlangıç yedeği ve kesintisiz gerekli günlük aralığı da gerekir. Arşivleme gecikmesini, günlük hacmini ve geri oynatma süresini ölçün. Günlükleri kapasite kazanmak için rastgele silmeyin; saklama ve temizleme ürünün desteklediği yöntemle yapılmalıdır.
İndeks ve sorgu planı
İndeks, uygun sorgularda taranacak veriyi azaltabilir; her yeni indeks yazma, bakım ve depolama maliyeti getirir. Sütun sırası, seçicilik, filtre ve sıralama gereksinimi birlikte değerlendirilir. Sorgu yavaşlığını yalnız indeks yokluğuna bağlamayın: yanlış tahmin, kilit beklemesi, disk gecikmesi veya gereksiz veri taşıma da neden olabilir. Temsilî sorgunun yürütme planını ve gerçek satır sayılarını inceleyin. Değişikliğin okuma kazancını, yoğun yazma sırasında oluşturduğu maliyetle birlikte ölçün; üretimde kontrolsüz bakım işlemleri başlatmayın.
Kilit, bekleme ve deadlock
Eşzamanlı işlemler veri bütünlüğü için kilit veya sürümleme mekanizmaları kullanır. Uzun açık transaction, diğer işleri bekletebilir; deadlock ise birbirini bekleyen işlemler arasındaki döngüdür. Ürün bazı işlemlerden birini sonlandırabilir ve uygulamanın güvenli tekrar deneme yapması gerekebilir. Bekleyen sorgu ile onu bloke eden sorguyu birlikte inceleyin. İzolasyon seviyesini rastgele düşürmek veri tutarlılığını değiştirebilir. Transaction süresini kısaltma, tutarlı erişim sırası ve uygun indeks gibi seçenekleri aynı iş yükünde doğrulayın.
Kalıcılaştırma ve güç kaybı
Commit edilmiş verinin güç kaybından sonra korunması veritabanı, işletim sistemi, dosya sistemi, kontrolcü ve diskin yazma garantilerinin birleşimine bağlıdır. Yazma önbelleği ve flush davranışını bilmeden performans için güvenlik ayarlarını kapatmayın. Güç kaybı korumalı depolama faydalıdır fakat bütün zincirin doğru yapılandırıldığını tek başına kanıtlamaz. Üretim yerine kontrollü laboratuvarda arıza ve recovery testi yapın. Veri bütünlüğünü örnek dosya açılmasıyla değil, uygulama kayıtları ve desteklenen tutarlılık kontrolleriyle doğrulayın.
Replikasyonun kapsamı
Replikasyon veri veya durum değişikliklerini başka bir kopyaya aktarır. Senkron aktarım gecikme ve bağlantı bağımlılığı yaratabilir; asenkron aktarım ise geride kalabilir. Kopyanın güncel olması, yanlış değişikliklerden korunması anlamına gelmez: silme veya bozulma da taşınabilir. Gecikmeyi yalnız bağlantı durumu üzerinden değil, uygulamanın tamamlanan son işlemiyle karşılaştırın. Kaynak düğüm kaybedildiğinde yazma yetkisinin hangi kopyaya geçeceğini ve eski düğüm geri gelince nasıl uzlaştırılacağını tanımlayın. Replikasyon gecikmesi ile gerçek kurtarma noktasını ayrı raporlayın.