Databasesystemen hebben de verantwoordelijkheid om relevante gegevens op elk moment op elk moment op te slaan en consistent beschikbaar te stellen. De meeste bedrijven zetten hun zaken niet voort na gevallen van gegevensverlies als gevolg van een databasefout, beveiligingsbrug, menselijke fout of catastrofale fout die de operationele knooppunten in productie volledig kan vernietigen. Door databases in hetzelfde datacenter te houden, loopt u een groot risico om alle gegevens te verliezen in het geval van deze wandaden.
Replicatie en back-up zijn de meest gebruikte manieren om een hoge beschikbaarheid van gegevens te garanderen. De keuze tussen de twee is afhankelijk van hoe vaak de gegevens veranderen. Back-up heeft de voorkeur wanneer gegevens niet vaker veranderen en er geen verwachting is dat er zoveel back-upbestanden zijn. Aan de andere kant heeft replicatie de voorkeur voor vaak veranderende gegevens, naast enkele andere bijbehorende voordelen, zoals het aanbieden van gegevens op een specifieke locatie door de latentie van verzoeken te verminderen. Zowel replicatie als back-up kunnen echter worden gebruikt voor maximale gegevensintegriteit en consistentie tijdens het herstel in elk geval van een storing.
Databaseback-ups bieden meer voordelen naast het bieden van een herstelpunt voor het bieden van basisprincipes voor het creëren van nieuwe omgevingen voor ontwikkeling, open toegang en staging zonder de productie te temperen. Het ontwikkelteam kan snel en eenvoudig nieuw geïntegreerde functies testen en hun ontwikkeling versnellen. Back-ups kunnen ook worden gebruikt naar het controlepunt voor codefouten wanneer de resulterende gegevens niet consistent zijn.
Overwegingen voor het maken van back-ups van MongoDB
Back-ups worden op bepaalde punten gemaakt om weer te geven (die fungeren als een momentopname van de database) welke gegevens de database op dat moment host. Als de database op een bepaald punt faalt, kunnen we het laatste back-upbestand gebruiken om de DB terug te draaien naar een punt voordat het mislukte. Er moet echter rekening worden gehouden met enkele factoren voordat u een herstel uitvoert en deze omvatten:
- Herstelpuntdoelstelling
- Hersteltijddoelstelling
- Database en snapshot-isolatie
- Complicaties met sharding
- Herstelproces
- Prestatiefactoren en beschikbare opslag
- Flexibiliteit
- Complexiteit van implementatie
Herstelpuntdoelstelling
Dit wordt uitgevoerd om te bepalen hoeveel gegevens u kunt verliezen tijdens het back-up- en herstelproces. Als we bijvoorbeeld gebruikersgegevens en clickstream-gegevens hebben, krijgen gebruikersgegevens voorrang op de clickstream-analyse, aangezien deze laatste opnieuw kunnen worden gegenereerd door de bewerkingen in uw toepassing na herstel te controleren. Een continue back-up verdient de voorkeur voor kritieke gegevens, zoals bankgegevens, gegevens van de productie-industrie en informatie over communicatiesystemen, en moet met korte tussenpozen worden uitgevoerd. Als de gegevens niet vaak veranderen, kan het goedkoper zijn om veel ervan te verliezen als u een herstelde momentopname maakt van bijvoorbeeld 6 maanden of 1 jaar eerder.
Hersteltijddoelstelling
Dit is om te analyseren en te bepalen hoe snel de hersteloperatie kan worden uitgevoerd. Tijdens het herstel zullen uw applicaties enige downtime oplopen die ook recht evenredig is met de hoeveelheid gegevens die moet worden hersteld. Als u een grote set gegevens herstelt, duurt het langer.
Database en snapshot-isolatie
Isolatie is een maatstaf voor hoe dichtbij de backup-snapshots zijn van de primaire databaseservers in termen van logische configuratie en fysiek. Als ze dichtbij genoeg zijn, wordt de hersteltijd korter, ten koste van een grotere kans op vernietiging op hetzelfde moment dat de database wordt vernietigd. Het is niet aan te raden om back-ups en de productieomgeving in hetzelfde systeem te hosten om te voorkomen dat eventuele verstoringen op de servers ook in de back-ups worden gemitigeerd.
Complicaties met sharding
Voor een gedistribueerd databasesysteem door middel van sharding wordt enige complexiteit van de back-up gepresenteerd en moeten schrijfactiviteiten mogelijk over het hele systeem worden onderbroken. Verschillende shards zullen verschillende soorten back-ups op verschillende tijdstippen voltooien. Gezien logische back-ups en Snapshot-back-ups,
Logische back-ups
- Scherven zijn van verschillende grootte en zullen daarom op verschillende tijdstippen eindigen
- MongoDB-base-dumps negeren de --oplog en zijn daarom niet consistent bij elke shard.
- De balancer is mogelijk uitgeschakeld terwijl deze aan zou moeten staan, alleen omdat sommige scherven het herstelproces misschien niet hebben voltooid
Snapshot-back-ups
- Werkt goed voor een enkele replica vanaf versie 3.2 en hoger. Overweeg daarom om uw MongoDB-versie bij te werken.
Herstelproces
Sommige mensen voeren back-ups uit zonder te testen of ze zullen werken in geval van herstel. Een back-up is in wezen bedoeld om een herstelmogelijkheid te bieden, anders wordt het onbruikbaar. U moet altijd proberen de back-ups op verschillende testservers uit te voeren om te zien of ze werken.
Prestatiefactoren en beschikbare opslag
Back-ups hebben ook de neiging om vele groottes aan te nemen zoals de gegevens uit de database zelf en moeten voldoende worden gecomprimeerd om niet veel onnodige ruimte in beslag te nemen die de algemene opslagbronnen van het systeem kan verminderen. Ze kunnen worden gearchiveerd in zip-bestanden, waardoor hun totale grootte wordt verkleind. Bovendien kan men, zoals eerder vermeld, de back-ups in verschillende datacenters archiveren vanuit de database zelf.
Back-ups kunnen verschillende prestaties van de database bepalen doordat sommige deze kunnen verslechteren. In dat geval zullen continue back-ups enige terugval opleveren en moeten daarom worden geconverteerd naar geplande back-ups om uitputting van onderhoudsvensters te voorkomen. In de meeste gevallen worden secundaire servers ingezet om back-ups te ondersteunen. In dit geval:
- Van afzonderlijke nodes kan geen consistente back-up worden gemaakt omdat MongoDB read-uncommitted gebruikt zonder een oplog bij het gebruik van het mongodump-commando en in dat geval zijn back-ups niet veilig.
- Gebruik secundaire knooppunten voor back-ups, aangezien het proces zelf tijd in beslag neemt, afhankelijk van de hoeveelheid gegevens die ermee gemoeid zijn en de aangesloten applicaties enige downtime zullen veroorzaken. Als u de primaire gebruikt die ook de Oplogs moet bijwerken, kunt u tijdens die downtime gegevens verliezen
- Het herstelproces kost veel tijd, maar de toegewezen opslagbronnen zijn klein.
Flexibiliteit
Het kan zijn dat u sommige gegevens tijdens het maken van een back-up niet wilt, zoals bij het voorbeeld van Recovery Point Objective, dat u wilt dat het herstel wordt uitgevoerd en dat de gebruiker op gegevens wordt weggefilterd. Om dit te doen, hebt u een gedeeltelijke back-upstrategie nodig die de flexibiliteit biedt om de gegevens uit te filteren waarin u niet geïnteresseerd bent, waardoor de herstelduur en de middelen die verspild zouden zijn, worden verkort. Incrementele back-up kan ook handig zijn, zodat alleen gegevensdelen die zijn gewijzigd, worden geback-upt vanaf de laatste snapshot in plaats van volledige back-ups te maken voor elke snapshot.
Complexiteit van implementatie
Uw back-upstrategie moet na verloop van tijd gemakkelijk in te stellen en te onderhouden zijn. U kunt uw back-ups ook plannen, zodat u ze niet handmatig hoeft te doen wanneer u maar wilt.
Conclusie
Databasesystemen garanderen 'leven na de dood' als er maar een goed ontwikkeld back-upsysteem is. De database kan worden vernietigd door catastrofale factoren, menselijke fouten of beveiligingsaanvallen die kunnen leiden tot verlies of corruptie van gegevens. Voordat u een back-up maakt, moet u rekening houden met het type gegevens in termen van grootte en belang. Het is altijd af te raden om uw back-ups in hetzelfde datacenter als uw database te bewaren om de kans te verkleinen dat de back-ups tegelijkertijd worden vernietigd. Back-ups kunnen de prestaties van de database veranderen, daarom moet men voorzichtig zijn met de te gebruiken strategie en wanneer de back-up moet worden uitgevoerd. Voer uw back-ups niet uit op het primaire knooppunt, aangezien dit kan leiden tot systeemuitval tijdens de back-up en als gevolg daarvan verlies van belangrijke gegevens.