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:
-
Sunucu çalışıyor mu?
- Sunucuyu başlattığınızdan emin olun
- Windows:
net start MenzeletDBveyamenzelet-server --config menzelet.toml - Linux:
sudo systemctl start menzeletveyamenzelet-server --config /etc/menzelet/menzelet.toml
-
Doğru adres ve port mu?
- Varsayılan:
127.0.0.1:4600 menzelet.tomldosyasındaki[server]bölümünü kontrol edin
- Varsayılan:
-
Güvenlik duvarı?
- Port 4600’un açık olduğundan emin olun
- Windows: Windows Defender Firewall ayarlarını kontrol edin
- Linux:
ufw statusveyaiptables -L
-
telnet/nc kullanıyorum, çalışıyor mu?
- MenzeletDB length-prefix framing protokolü kullanır
telnetvencuyumlu değildir- Her zaman
menzelet-clikullanı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:
saile 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:
saile bağlanın- Kullanıcının yetkilerini kontrol edin:
SHOW GRANTS FOR kullanici_adi - 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:
mastersilinemezsakullanıcısı silinemez ve pasifleştirilemezmnz_ön ekli roller silinemez
Veri Sorunları
INSERT Hatası: “Anahtar zaten mevcut”
Neden: Aynı birincil anahtarla veri eklenmiş.
Çözümler:
- Farklı bir anahtar kullanın
- 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_dbile kontrol edin
Türkçe Karakterler Yanlış Sıralanıyor
Neden: Collation ayarı yapılandırılmamış.
Çözüm:
menzelet.tomldosyasında:
[collation]
default_locale = "tr"
strength = "tertiary"
- 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:
- Sunucuyu yeniden başlatın
- WAL dosyaları otomatik replay edilir
- Flush edilmemiş veriler belleğe geri yüklenir
- Normal çalışmaya devam edilir
Sunucu Başlamıyor
Olası nedenler:
-
Port kullanılıyor:
- Başka bir işlem 4600 portunu kullanıyor olabilir
- Windows:
netstat -ano | findstr :4600 - Linux:
lsof -i :4600
-
data/ dizini bozuk:
data/master/dizinindeki Parquet dosyalarını kontrol edin- Yedekten geri yükleyin
-
Yapılandırma hatası:
menzelet.tomldosyası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:
COMPACTkomutu ile flush dosyalarını birleştirinmenzelet.tomliçinde flush eşiğini düşürün
Docker Sorunları
Container Başlamıyor
Kontrol:
docker logs menzelet
Olası nedenler:
MENZELET_SA_PASSWORDortam değişkeni belirlenmemiş- Port çatışması (4600 kullanılıyor)
Dışarıdan Bağlanamıyorum
Çözüm:
- Container’ın
-p 4600:4600ile 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:
-
İndeks kullanın:
- Sık aranan sütunlarda indeks oluşturun
INDEX BUILD tablo sutun btree
-
Flush ve compaction:
- Çok fazla flush dosyası sorgu performansını düşürür
COMPACTkomutu ile birleştirin
-
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:
- Sunucu loglarını inceleyin (stdout)
--pingile sunucu sağlık kontrolü yapın- Prometheus metriklerini kontrol edin (
/metricsendpoint)