DBAtlas · Veritabanı operasyon atlası

Çoğunluk kaybında replica set'i zorla yeniden yapılandır (force reconfig)

MongoDBReplica Set

Komut

// Ayakta kalan ve en guncel optime'a sahip uyede (secondary olarak calisir):
rs.status().members.map(m => ({ host: m.name, state: m.stateStr, health: m.health, optime: m.optimeDate }))
cfg = rs.conf()
cfg.members.map((m, i) => ({ i: i, host: m.host }))
// Yalnizca erisilebilen uyeleri birak (ornek: 0 ve 2 numarali uyeler):
cfg.members = [cfg.members[0], cfg.members[2]]
rs.reconfig(cfg, { force: true })
// Yeni primary secimini dogrula:
rs.status().members.map(m => ({ host: m.name, state: m.stateStr }))

Ne yapar?

Oy veren üyelerin çoğunluğu kalıcı olarak kaybedildiğinde (ör. bir veri merkezi tamamen gitti), ayakta kalan üyelerden yeni bir config oluşturup set'in tekrar primary seçebilmesini sağlar.

Ne zaman kullanılır?

Yalnızca felaket senaryosunda: çoğunluk geri gelmeyecek ve set salt okunur kaldığında.

Dikkat

Son çare işlemidir. Kaybedilen üyeler sonradan geri gelirse eski config ile split-brain ve rollback oluşabilir; onları ağdan izole et, geri alırken verilerini silip initial sync ile ekle. En güncel optime'a sahip üyeyi seç; aksi halde diğer üyelerde majority commit edilmemiş yazmalar rollback'e düşer. Normal üye değişikliğinde force kullanma.

DBAtlas'ta aç →

İlgili