Bu rehber neyi çözer?
MongoDB’de çalışma setinin RAM’e sığması, düşük storage latency ve doğru replica/sharding tasarımı performans için kritik olabilir. Platform desteği sürüm bazında dikkatle kontrol edilmelidir.
Platform ve CPU
MongoDB resmi production notes güncel sürümler için önerilen Linux dağıtımları ve Windows Server platformlarını listeler. x86_64 ve ARM64 için minimum CPU mimarisi koşulları vardır.
Üretim öncesi MongoDB sürümü ile OS/kernel uyumluluğu mutlaka doğrulanmalıdır; belirli kernel sürümlerinde özel uyarılar bulunabilir.
RAM ve WiredTiger
Aktif working set’in büyük bölümünün memory/cache içinde kalması disk baskısını azaltır. Bellek yetersizliği page fault ve storage latency etkisini büyütür.
Sadece toplam database boyutuna değil aktif veri/index setine ve concurrent operation sayısına bakılmalıdır.
Storage
SSD/NVMe random I/O ve journal/checkpoint davranışında avantaj sağlar. Filesystem ve mount ayarları MongoDB üretim dokümantasyonuna göre seçilmelidir.
RAID/cloud volume latency, IOPS limiti ve queue davranışı monitoring ile doğrulanmalıdır.
Güvenlik
Authentication, role-based authorization, TLS, network binding/firewall, audit ihtiyacı ve encryption-at-rest seçenekleri birlikte tasarlanmalıdır.
Database portunun internete doğrudan açılması yerine uygulama/network segmentasyonu kullanılmalıdır.
HA ve scale
Replica set HA ve read dağılımı için temel modeldir; sharding dataset/throughput yatay büyümesi için kullanılır.
Sharding operasyonel karmaşıklık getirdiği için yalnız gerçekten gerekli olduğunda uygulanmalıdır.
Sık Sorulan Sorular
MongoDB için Linux mu Windows mu daha iyi?
Her ikisi de desteklenebilir; üretim rehberleri önerilen platformları listeler. Operasyon ekosistemi ve sürüm uyumluluğu seçimde önemlidir.
MongoDB için RAM neden önemli?
Aktif working set ve index’lerin memory’de kalması storage I/O ve latency etkisini azaltabilir.
Her büyük MongoDB sistemi shard edilmeli mi?
Hayır. Replica set çoğu HA ihtiyacını çözer; sharding yalnız dataset/throughput tek cluster sınırına yaklaşıyorsa düşünülmelidir.
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
MongoDBde belge modeli, indeksler, çalışma kümesi ve write concern sonucu belirler. Replica set HA için, sharding veri dağıtımı için farklı amaç taşır. Majority yazma onayı, journal ve read concern kapsamları aynı değildir; uygulamanın gerekli garantileri açık seçilmelidir. Her belgeye sınırsız büyüyen alan eklemek veri modelini zorlaştırabilir.
- 1Belge/indeks modeli
- 2Read/write concern
- 3Replica veya shard
- 4Driver/failover testi
Tasarım parametreleri
- Write concern ve read concern
- Çoğunluk, journal ve okuma tutarlılığı seçenekleri farklı garantiler verir; RPO gereksinimine göre doğrulayın.
- Çalışma kümesi ve oplog
- İndeks/veri cacheini ve oplog penceresini yoğun yazma ve node kesintisiyle birlikte planlayın.
- İş 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 pilotta primary değişimi sırasında uygulamanın driver yeniden seçim ve retry davranışını sınayın. Aynı isteğin tekrar işlenmesi idempotencyyle kontrol edilir. Shard key kararı önce gerçek sorgu ve dağılım ölçümüyle değerlendirilir; tek bir sıcak shard toplam kapasiteyi sınırlayabilir.
Hata teşhisi
| Belirti | Olası neden / ayrım | Doğrulama |
|---|---|---|
| Node geri geldi ama yeniden sync gerekiyor | Kesinti oplog penceresini aşmış olabilir. | Replica geriliği ve mevcut oplog zaman aralığını 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
- Uygulamanın onaylanan yazmayı ve tekrar denemeyi hangi garantiyle yönettiğini 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.
İ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.
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.
Quorum ve split-brain
Quorum, hangi düğüm grubunun hizmeti sürdürme yetkisine sahip olduğuna karar verilmesine yardımcı olur. Amaç, bağlantısı kopan grupların aynı kaynağa bağımsız şekilde yazmasını önlemektir. Oy sayısı, dinamik oy yönetimi ve witness davranışı ürüne göre değişir; yalnız düğüm sayısıyla sonuç çıkarılmaz. Witness aynı arızada kaybedilecek yerdeyse beklenen fayda azalır. Ağ bölünmesi ve witness kaybını ayrı test edin. Geçişten sonra tek bir yetkili yazıcı bulunduğunu ve eski düğümün kontrolsüz biçimde hizmete dönmediğini 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.
Kapasite ve kullanılabilir pay
Ham kapasite ile uygulamanın kullanabileceği kapasite aynı değildir. RAID veya erasure coding, dosya sistemi, ayrılmış alan, metadata, snapshot ve büyüme payı ayrı kalemlerdir. TB ile TiB gösterimi de görünür sayıyı değiştirir. Hesabı birimleriyle yazın ve önce kullanılabilir korumalı kapasiteyi, sonra işletim rezervini çıkarın. Ortalama doluluğu izlemek kadar büyüme eğimini izlemek de önemlidir. Tahmini dolma tarihi, yeni kapasiteyi satın alma ve devreye alma süresinden daha uzakta tutulmalıdır.