Není běžné vidět tento druh problému, ale viděl jsem, že se vyskytuje sporadicky.
Nejlepší nápravnou akcí, kterou zde můžete provést, je odstoupit od primární složky odkazovaného datového fragmentu TO, čímž se odstraní smazané pozadí. Odstraněná vlákna existují pouze na aktuálním primárním kanálu (budou replikována z tohoto primárního kanálu prostřednictvím oplog
jak jsou zpracovávány). Když jej ustoupíte, stane se sekundárním, vlákna již nemohou zapisovat a získáte nový primární bez nevyřízených smazání. Možná budete chtít restartovat původní primární po kroku dolů, abyste vymazali staré kurzory, ale obvykle to není naléhavé.
Jakmile to uděláte, zůstane vám velké množství osiřelých dokumentů, které mohou být adresovány pomocí cleanUpOrphaned
příkaz
které bych doporučil provozovat v časech s nízkým provozem (pokud takové časy máte).
Pro informaci, pokud se jedná o opakující se problém, pak je pravděpodobné, že primárky mají trochu problémy se zatížením, a abyste se vyhnuli frontám na odstranění, můžete nastavit _waitForDelete
možnost
pro balancer na hodnotu true (ve výchozím nastavení nepravda) takto:
use config
db.settings.update(
{ "_id" : "balancer" },
{ $set : { "_waitForDelete" : true } },
{ upsert : true }
)
To bude znamenat, že každá migrace bude pomalejší (možná výrazně), ale nezpůsobí hromadění mazání na pozadí.