dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Runbook #53
mongodb
CapacitySEV1 · KRİTİK KESİNTİ15-30 dakika / 15-30 minsclusterAdmin / dbAdminAnyDatabase / root

MongoDB Veri Diski Doldu: Güvenli Alan Açma ve Toparlanma

dbPath diski dolduğunda hangi dosyaların büyüdüğünü, replika/topoloji ve yedek risklerini denetleyerek servis kesintisini güvenli biçimde giderir.

İlişkili Metrik:M56
İlişkili Script:S91S82S95
#disk-full#dbPath#WiredTiger#oplog

Operasyonel Güvenlik ve Risk Uyarısı

Bu runbook müdahale adımları içerir; birçok adım yazma etkilidir (KILL, terminate, DROP, RESIZE). Önce test ortamında deneyin, üretimde adımları sırayla ve doğrulayarak uygulayın.

🟢 Salt Okunur (Read-Only)·🟡 Geri Alınabilir (Reversible)·🔴 Yüksek Etkili / Geri Alınamaz (High Impact)

1. Belirti / Symptom

M56 boş alanı kritik seviyeye düşer; loglarda `No space left on device`, WiredTiger yazma hatası veya servis durması görülebilir. Dosya sistemi inode kullanımını da kontrol edin.

2. Etki / Impact

Yazmalar başarısız olabilir, servis durabilir; primary etkilenirse seçim gerçekleşir. Ani `rm` veya plansız yeniden başlatma kurtarma riskini büyütür.

3. Teşhis / Diagnosis

🟢 Salt Okunur1. İşletim sisteminde doğru `dbPath` ve dosya sistemini belirleyin; varsayılan yol her kurulumda aynı değildir:
bash
df -h /var/lib/mongodb
df -i /var/lib/mongodb

Yol farklıysa yapılandırmadaki `storage.dbPath` değerine göre değiştirin. Oplog, journal, log, snapshot/backup hedefleri ve inode kullanımını ayrı değerlendirin.

🟢 Salt Okunur2. Sunucu yanıt veriyorsa toplam veri/indeks boyutlarını (S91, S82) ve TTL politikasını (S95) inceleyin:
javascript
const names = db.adminCommand({ listDatabases: 1 }).databases;
names.map(x => {
  const s = db.getSiblingDB(x.name).stats();
  return { db: x.name, storageGB: +(s.storageSize / 1073741824).toFixed(1),
           indexGB: +(s.indexSize / 1073741824).toFixed(1) };
});
🟢 Salt Okunur3. Replikada hangi üye dolu? Quorum var mı? Diskle aynı hacimde duran snapshot veya dış log dosyası varsa motor dosyalarından ayrı değerlendirin.

4. Müdahale / Response

🟡 Geri Alınabilir1. En güvenli ilk adım, **dosya sistemine kapasite eklemek** (bulut disk genişletme + filesystem grow işlemi); servis devam ediyorsa yazma/toplu import hızını azaltın. Dosya sistemi genişletmesini altyapı prosedürüne göre yapın.
🟡 Geri Alınabilir2. **Yalnızca motorun kullanmadığı**, konumu ve saklama politikası doğrulanmış bağımsız log/backup dosyalarını başka hacme taşıyın; aktif log dosyasını taşımayın. Sağlıklı yedeği doğrulayın.
🟡 Geri Alınabilir3. Eski veriyi silmek uygulama tarafında veri saklama kararıdır; doküman silme genellikle WiredTiger dosyasını işletim sistemine **hemen küçültmez**. TTL (S95) kapasite artışını kontrol etmek içindir, acil disk açma garantisi değildir.
🔴 YÜKSEK RİSK / GERİ ALINAMAZ4. **dbPath'teki `WiredTiger*`, `collection-*.wt`, `index-*.wt`, `journal`, `local.oplog.rs` dosyalarını elle silmeyin.** Veri kaybı veya kurtarılamayan başlangıç hatası doğar. `compact`/resync dolu disk üzerinde körlemesine denenmez, boş disk ve replika planı gerektirir. Yedeği doğrulamadan `--repair` çalıştırmayın.

5. Doğrulama / Verification

M56 boş alan payı güvenli seviyeye döndü, yeni yazmalar başarılı, replika üye durumları sağlıklı, mongod logunda yeni disk hatası yok. Büyüme tahminine göre tekrar dolma zamanı hesaplandı.

6. Geri Alma / Rollback

Kapasite büyütme genelde küçültülemez; değişiklik kaydını tutun. Silinmiş veri/dosya ancak doğrulanmış yedekten geri döner; belge silmeyi acil alan açma tekniği saymayın.

Diğer MONGODB Runbook'ları