sql >> Database >  >> NoSQL >> MongoDB

Hoe te herstellen van een MongoDB-terugdraaiing?

Als u een MongoDB-replicaset gedurende een redelijke tijd in een openbare cloudomgeving gebruikt, is de kans groot dat u heeft een 'rollback' ervaren. Het klinkt ontmoedigend, maar er zijn eenvoudige stappen om uw gegevens te herstellen voor het geval uw systeem een ​​rollback ervaart.

Wanneer vindt een terugdraaiing plaats?

Een rollback in een MongoDB-replicaset kan plaatsvinden in de volgende reeks stappen
1. Een MongoDB-primaire accepteert schrijfbewerkingen die nog niet zijn gerepliceerd naar andere secundairen en crasht vervolgens
2. Een andere server wordt primair en accepteert andere schrijfbewerkingen
3. Wanneer de vorige primaire weer terugkomt en zijn status opnieuw synchroniseert met de meerderheid

Kan ik terugdraaien voorkomen?

Zeker. Maar zoals altijd hangt er een prijskaartje aan. U kunt uw schrijfzorg instellen op 'MAJORITY'. Dit vereist dat al uw schrijfbewerkingen worden vastgelegd op een meerderheid van de knooppunten in de replicaset voordat MongoDB deze met succes kan bevestigen. Dit zal echter een dramatische impact hebben op uw schrijfsnelheid. Dus in de echte wereld zou een goede balans kunnen zijn om alleen schrijfzorg 'MAJORITY' te gebruiken voor het schrijven van belangrijke transactiegegevens

Hoe gegevens herstellen van een terugdraaiing?

Hieronder vindt u vier eenvoudige stappen om uw gegevens te herstellen in geval van een terugdraaiing

1.  Zoek de rollback-bestanden
Als er een rollback plaatsvindt, worden de bson-bestanden van de rollback-gegevens in de 'rollback'-directory van uw MongoDB-gegevenspad geplaatst. De bestanden zien er ongeveer zo uit:

<dbname>.<collectioname>.2016-02-08T19-34-44.0.bson

2. Laad de gegevens van de rollback in een aparte database of server
Mijn voorkeur gaat uit naar het kopiëren van de rollback-bestanden naar een nieuwe server en gebruik mongorestore om ze op de server te laden. Hier is de syntaxis die u kunt gebruiken

mongorestore -u <> -p <> -h 127.0.0.1 -d <rollbackrestoretestdb> -c <rollbackrestoretestc> <path to the .bson file> --authenticationDatabase=<database of user>

3.  Doorzoek de gegevens en ruim onnodige gegevens op
Op dit moment moet u als databasebeheerder naar eigen goeddunken beslissen welke gegevens van de terugdraaiing u wilt behouden en welke gegevens niet langer logisch zijn. In de meeste gevallen is het onwaarschijnlijk dat u alle gegevens gewoon kunt importeren. Dit is waarschijnlijk de moeilijkste stap in terugdraaiherstel.

4. Gegevens importeren in het primaire cluster
Gebruik de tools mongodump en mongorestore om de opgeschoonde gegevens te downloaden en opnieuw te importeren in uw oorspronkelijke productiecluster.

Raadpleeg de officiële MongoDB-documentatie voor meer informatie over de terugdraaibewerkingen


  1. mongodb zoekt zowel met AND als OR

  2. Kan mongodb worden gebruikt als een ingesloten database?

  3. Paginering implementeren in mongodb

  4. Hoe voer ik een MongoDB js-script uit met behulp van de Java MongoDriver