MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

moveChunk не успя да включи TO-shard в прехвърлянето на данни:не може да приеме нови парчета, защото

Не е обичайно да се среща подобен проблем, но съм го виждал спорадично.

Най-доброто коригиращо действие, което трябва да предприемете тук, е да се оттеглите от основния на посочения TO фрагмент, което ще изчисти фоновите изтривания. Нишките за изтриване съществуват само в текущата основна (те ще бъдат репликирани от тази основна чрез oplog докато се обработват). Когато го намалите, той става вторичен, нишките вече не могат да пишат и получавате нов основен без чакащи изтривания. Може да искате да рестартирате предишния основен след стъпката надолу, за да изчистите старите курсори, но обикновено не е спешно.

След като направите това, ще останете с голям брой осиротели документи, които могат да бъдат адреси с cleanUpOrphaned команда което бих препоръчал да работи при нисък трафик (ако имате такива).

За справка, ако това е повтарящ се проблем, вероятно първичните се борят малко по отношение на натоварването и за да избегнете опашката от изтривания, можете да зададете _waitForDelete опция за балансира на true (false по подразбиране), както следва:

use config
db.settings.update(
   { "_id" : "balancer" },
   { $set : { "_waitForDelete" : true } },
   { upsert : true }
)

Това ще означава, че всяка миграция е по-бавна (може би значително), но няма да доведе до натрупване на фонови изтривания.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Селективна репликация в mongodb

  2. Използвайте агрегирането на MongoDB, за да намерите пресечна точка на два набора в един и същи документ

  3. Как да вмъкнете в MongoDB колекция с позиция

  4. Как да групирате по документи по седмица в mongodb

  5. Грешка в Mongoose - няма метод "toObject" след надграждане