sql >> Databáze >  >> NoSQL >> MongoDB

moveChunk nedokázal zapojit TO-shard do přenosu dat:nemůže přijímat nové bloky, protože

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í.




  1. Odinstalujte MongoDB na Mac OS X

  2. Jak mohu překonat problémy se škálováním pomocí serverless a MongoDB?

  3. Tastypie vrátit data z požadavků DELETE?

  4. Příkazy mongod a mongo nefungují ve Windows 10