dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Runbooks Library/mongodb/#55
Runbook #55
mongodb
AvailabilitySEV1 · CRITICAL OUTAGE15-30 dakika / 15-30 minsclusterAdmin / dbAdminAnyDatabase / root

MongoDB Replica Set Elections and PRIMARY Loss: Stability Triage

Evaluates member health, votes, and oplog status during repeated elections while safely diagnosing network/disk faults and avoiding split-brain risks.

Related Metrics:M58
Related Scripts:S84S93
#replica-set#election#PRIMARY#quorum

Operational Safety & Risk Notice

This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.

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

1. Symptom & Signals

Kısa aralıklarla PRIMARY değişir, uygulama `NotWritablePrimary`, server selection timeout veya kısa yazma kesintileri yaşar. M58 üye durumları/eski primary kaybını işaret eder.

2. Business & Technical Impact

Yazma erişimi kısa süreli veya quorum yoksa kalıcı olarak kesilir. `w:1` ile yazılmış ama çoğunluğa ulaşmamış kayıtların rollback riski vardır.

3. Diagnosis & Root-Cause Analysis

🟢 Read-Only1. Sağlam bir üye üzerinde (S84) durumu anlık kaydedin:
javascript
const st = rs.status();
st.members.map(m => ({ name: m.name, state: m.stateStr, health: m.health,
  optimeDate: m.optimeDate, lastHeartbeatMessage: m.lastHeartbeatMessage }));
rs.conf().members.map(m => ({ host: m.host, votes: m.votes, priority: m.priority,
  hidden: m.hidden, arbiterOnly: m.arbiterOnly }));
🟢 Read-Only2. Mongod loglarında `election`, `stepDown`, heartbeat timeout, bağlantı reddi ve disk/fsync gecikmelerini zaman çizelgesine koyun. 5.0+ loglama biçimi farklı olabilir; alan adına değil olay zamanına ve üye adına bakın.
🟢 Read-Only3. Quorum: oy hakkı olan üyelerin **çoğunluğu** birbirini görüyor mu? 3 oyda en az 2; arbiter veri replika değildir. Ağ bölünmesi, DNS, TLS ve saat farklarını altyapı ekibiyle kontrol edin.
🟢 Read-Only4. Disk/bellek baskısı ve aşırı replika lag varsa `mongo-replication-lag` ve `mongo-oplog-window-short` runbook'larına geçin (S93).

4. Remediation & Action Plan

🟡 Reversible1. Öncelik ağ, DNS, disk ve kaynak doygunluğunu düzeltmek; üyelerin kararlı biçimde birbirine eriştiğini doğrulayın. Primary değiştirmek semptomu saklayabilir.
🟡 Reversible2. Tek üye sorunluysa, quorum korunarak kontrollü bir üye bakımı yapın. Uygulamanın replica set URI'sinde **tüm veri taşıyan üyelerin** adresleri ve uygun retry davranışı olmalı.
🔴 HIGH RISK / IRREVERSIBLE3. Çoğunluk yokken `rs.reconfig(..., { force: true })` yapmayın. Force reconfig geri alınmamış çoğunluk yazılarını veya replika tutarlılığını etkileyebilir; yalnızca belgelenmiş felaket kurtarma prosedürüyle ve veri kaybı onayıyla uygulanır.
🔴 HIGH RISK / IRREVERSIBLE4. Sağlıklı bir PRIMARY varken gelişi güzel `rs.stepDown()` veya aynı anda çok üyeyi yeniden başlatmak hizmeti keser. `w:majority` değerini veri kaybını gizlemek için düşürmeyin.

5. Verification & Health Checks

Bir PRIMARY, beklenen SECONDARY'ler var; quorum sabit, heartbeat hataları ve sık seçimler durdu, replika gecikmeleri düşük; uygulama yazmaları kendi write concern düzeyinde başarıyla tamamlanıyor.

6. Rollback & Contingency Plan

Bakım sırasında değişen uygulama URI/altyapı ayarlarını eski doğrulanmış duruma döndürün. Gerçekleşmiş seçim geri alınmaz; rollback olup olmadığını üye logları ve veri tutarlılığıyla inceleyin.

More MONGODB Runbooks