Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Sorun Giderme

Bu sayfa, MenzeletDB kullanırken karşılaşılan yaygın sorunları ve çözümlerini içerir.

Bağlantı Sorunları

Sunucuya Bağlanamıyorum

Belirti: İstemci “bağlantı reddedildi” hatası veriyor.

Olası nedenler ve çözümler:

  1. Sunucu çalışıyor mu?

    • Sunucuyu başlattığınızdan emin olun
    • Windows: net start MenzeletDB veya menzelet-server --config menzelet.toml
    • Linux: sudo systemctl start menzelet veya menzelet-server --config /etc/menzelet/menzelet.toml
  2. Doğru adres ve port mu?

    • Varsayılan: 127.0.0.1:4600
    • menzelet.toml dosyasındaki [server] bölümünü kontrol edin
  3. Güvenlik duvarı?

    • Port 4600’un açık olduğundan emin olun
    • Windows: Windows Defender Firewall ayarlarını kontrol edin
    • Linux: ufw status veya iptables -L
  4. telnet/nc kullanıyorum, çalışıyor mu?

    • MenzeletDB length-prefix framing protokolü kullanır
    • telnet ve nc uyumlu değildir
    • Her zaman menzelet-cli kullanın

Bağlantı Kopuyor

Belirti: İşlem sırasında bağlantı aniden kapanıyor.

Olası nedenler:

  • Hatalı LOGIN girişimi (güvenlik önlemi olarak bağlantı kapatılır)
  • Sunucu maksimum bağlantı limitine ulaşmış olabilir (max_connections)
  • Ağ zaman aşımı

Kimlik Doğrulama Sorunları

“Kimlik doğrulaması gerekli” Hatası

Neden: LOGIN komutu kullanılmadan SQL çalıştırılmaya çalışıldı.

Çözüm:

menzelet> LOGIN sa şifreniz

Hatalı Şifre

Belirti: LOGIN sonrası bağlantı hemen kapanıyor.

Olası nedenler:

  • Şifre yanlış yazılmış olabilir (büyük/küçük harf duyarlı)
  • Kullanıcı pasifleştirilmiş olabilir (is_active = false)

Çözüm:

  • sa ile giriş yapın ve kullanıcıyı kontrol edin: SHOW USERS

Yetkilendirme Sorunları

“Permission denied” Hatası

Neden: Kullanıcının ilgili işlem için yetkisi yok.

Çözüm:

  1. sa ile bağlanın
  2. Kullanıcının yetkilerini kontrol edin: SHOW GRANTS FOR kullanici_adi
  3. Gerekli yetkileri atayın:
GRANT mnz_db_writer ON DATABASE veritabani_adi TO kullanici_adi

master DB Üzerinde İşlem Yapılamadı

Neden: master sistem veritabanıdır ve bazı işlemler kısıtlıdır.

Bilgi:

  • master silinemez
  • sa kullanıcısı silinemez ve pasifleştirilemez
  • mnz_ ön ekli roller silinemez

Veri Sorunları

INSERT Hatası: “Anahtar zaten mevcut”

Neden: Aynı birincil anahtarla veri eklenmiş.

Çözümler:

  1. Farklı bir anahtar kullanın
  2. Mevcut veriyi güncellemek için: INSERT OR REPLACE INTO ...

SELECT Sonuç Dönmüyor

Olası nedenler:

  • Tablo boş olabilir
  • WHERE koşulu hiçbir satırı karşılamıyor olabilir
  • Yanlış veritabanı seçili olabilir — USE dogru_db ile kontrol edin

Türkçe Karakterler Yanlış Sıralanıyor

Neden: Collation ayarı yapılandırılmamış.

Çözüm:

  1. menzelet.toml dosyasında:
[collation]
default_locale = "tr"
strength = "tertiary"
  1. Sorgularda ORDER BY collate(sutun) kullanın

Sunucu Sorunları

Sunucu Çökmesi Sonrası Veri Kaybı

Bilgi: MenzeletDB WAL (Write-Ahead Log) sayesinde çökme sonrası otomatik kurtarma yapar.

Adımlar:

  1. Sunucuyu yeniden başlatın
  2. WAL dosyaları otomatik replay edilir
  3. Flush edilmemiş veriler belleğe geri yüklenir
  4. Normal çalışmaya devam edilir

Sunucu Başlamıyor

Olası nedenler:

  1. Port kullanılıyor:

    • Başka bir işlem 4600 portunu kullanıyor olabilir
    • Windows: netstat -ano | findstr :4600
    • Linux: lsof -i :4600
  2. data/ dizini bozuk:

    • data/master/ dizinindeki Parquet dosyalarını kontrol edin
    • Yedekten geri yükleyin
  3. Yapılandırma hatası:

    • menzelet.toml dosyasının geçerli TOML formatı olduğunu kontrol edin

Bellek Kullanımı Yüksek

Olası nedenler:

  • Çok fazla tablo için bellek tamponu açık
  • Büyük indeksler bellekte tutuluyor
  • Flush eşiği çok büyük ayarlanmış

Çözüm:

  • COMPACT komutu ile flush dosyalarını birleştirin
  • menzelet.toml içinde flush eşiğini düşürün

Docker Sorunları

Container Başlamıyor

Kontrol:

docker logs menzelet

Olası nedenler:

  • MENZELET_SA_PASSWORD ortam değişkeni belirlenmemiş
  • Port çatışması (4600 kullanılıyor)

Dışarıdan Bağlanamıyorum

Çözüm:

  • Container’ın -p 4600:4600 ile başlatıldığından emin olun
  • host = "0.0.0.0" ayarının yapılandırıldığını kontrol edin

Performans Sorunları

Sorgular Yavaş

Olası nedenler ve çözümler:

  1. İndeks kullanın:

    • Sık aranan sütunlarda indeks oluşturun
    • INDEX BUILD tablo sutun btree
  2. Flush ve compaction:

    • Çok fazla flush dosyası sorgu performansını düşürür
    • COMPACT komutu ile birleştirin
  3. WHERE koşulu optimize edin:

    • Eşitlik kontrolleri için Hash indeks
    • Aralık sorguları için BTree indeks

Yardım ve Destek

Sorunun devam etmesi durumunda:

  1. Sunucu loglarını inceleyin (stdout)
  2. --ping ile sunucu sağlık kontrolü yapın
  3. Prometheus metriklerini kontrol edin (/metrics endpoint)