sql >> Database >  >> NoSQL >> MongoDB

Tips voor het opslaan van MongoDB-back-ups in de cloud

Als het gaat om back-ups en gegevensarchivering, staan ​​IT-afdelingen onder druk om te voldoen aan striktere serviceniveau-overeenkomsten, meer aangepaste rapporten te leveren en te voldoen aan de toenemende nalevingsvereisten, terwijl ze de dagelijkse archief- en back-uptaken blijven beheren. Zonder twijfel slaat de databaseserver enkele van de meest waardevolle informatie van uw onderneming op. Het garanderen van betrouwbare databaseback-ups om gegevensverlies te voorkomen in het geval van een ongeval of hardwarestoring is een cruciaal selectievakje.

Maar hoe maak je het echt DR wanneer al je gegevens zich in één datacenter bevinden of zelfs datacenters in de buurt van geolocatie? Bovendien, of het nu een 24x7 zwaarbelaste server is of een omgeving met weinig transactievolume, u zult back-ups nodig hebben om een ​​naadloze procedure te maken zonder de prestaties van de server in een productieomgeving te verstoren.

In deze blog gaan we MongoDB-back-up naar de cloud bespreken. De cloud heeft de databack-upindustrie veranderd. Vanwege de betaalbare prijs hebben kleinere bedrijven een externe oplossing die een back-up van al hun gegevens maakt.

We laten u zien hoe u veilige MongoDB-back-ups kunt maken met behulp van mongo-services, evenals andere methoden die u kunt gebruiken om de opties voor noodherstel van uw database uit te breiden.

Als uw server of back-upbestemming zich in een blootgestelde infrastructuur zoals een openbare cloud, hostingprovider of verbonden via een niet-vertrouwd WAN-netwerk bevindt, moet u nadenken over aanvullende acties in uw back-upbeleid. Er zijn een paar verschillende manieren om databaseback-ups voor MongoDB uit te voeren, en afhankelijk van het type back-up, zullen de hersteltijd, grootte en infrastructuuropties variëren. Aangezien veel van de cloudopslagoplossingen eenvoudigweg opslag zijn met verschillende API-frontends, kan elke back-upoplossing worden uitgevoerd met een beetje scripting. Dus wat zijn de opties die we hebben om het proces soepel en veilig te laten verlopen?

MongoDB-back-upversleuteling

Beveiliging moet centraal staan ​​bij elke actie die IT-teams ondernemen. Het is altijd een goed idee om codering af te dwingen om de beveiliging van back-upgegevens te verbeteren. Een eenvoudig gebruiksscenario om versleuteling te implementeren, is waar u de back-up naar een externe back-upopslag in de openbare cloud wilt pushen.

Als je een versleutelde back-up maakt, moet je er rekening mee houden dat het meestal meer tijd kost om te herstellen. De back-up moet worden gedecodeerd voordat herstelactiviteiten worden uitgevoerd. Met een grote dataset kan dit enige vertraging opleveren voor de RTO.

Aan de andere kant, als je de privésleutels gebruikt voor codering, zorg er dan voor dat je de sleutel op een veilige plaats bewaart. Als de privésleutel ontbreekt, is de back-up nutteloos en onherstelbaar. Als de sleutel wordt gestolen, worden alle gemaakte back-ups die dezelfde sleutel gebruiken in gevaar gebracht omdat ze niet langer beveiligd zijn. U kunt populaire GnuPG of OpenSSL gebruiken om privé- of openbare sleutels te genereren.

Als u MongoDBdump-codering wilt uitvoeren met GnuPG, genereert u een privésleutel en volgt u de wizard dienovereenkomstig:

$ gpg --gen-key

Maak zoals gewoonlijk een gewone MongoDBdump-back-up:

$ mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz
Versleutel het dumpbestand en verwijder de oudere gewone back-up:
$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz

$ rm -f db1.tar.gz
GnuPG voegt automatisch de .gpg-extensie toe aan het versleutelde bestand. Om te decoderen,

voer je gewoon het gpg-commando uit met --decrypt flag:

$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
Om een ​​versleutelde MongoDBdump te maken met OpenSSL, moet men een privésleutel en een openbare sleutel genereren:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem

Deze privésleutel (dump.priv.pem) moet op een veilige plaats worden bewaard voor toekomstige ontsleuteling. Voor Mongodump kan een versleutelde back-up worden gemaakt door de inhoud naar bijvoorbeeld openssl te pipen

mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz | openssl smime -encrypt -binary -text -aes256

-out database.sql.enc -outform DER dump.pub.pem
Om te decoderen, gebruikt u gewoon de privésleutel (dump.priv.pem) naast de vlag -decrypt:

openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out db1.tar.gz

MongoDB-back-upcompressie

Binnen de wereld van database-cloudback-up is compressie een van je beste vrienden. Het kan niet alleen opslagruimte besparen, maar het kan ook de tijd die nodig is om gegevens te downloaden/uploaden aanzienlijk verkorten.

Naast archivering hebben we ook ondersteuning toegevoegd voor compressie met gzip. Dit wordt onthuld door de introductie van een nieuwe opdrachtregeloptie "--gzip" in zowel mongodump als mongorestore. Compressie werkt zowel voor back-ups die zijn gemaakt met behulp van de directory als de archiefmodus en vermindert het gebruik van schijfruimte.

Normaal gesproken kan MongoDB-dump de beste compressiesnelheden hebben omdat het een plat tekstbestand is. Afhankelijk van de compressietool en -verhouding kan een gecomprimeerde MongoDBdump tot 6 keer kleiner zijn dan de oorspronkelijke back-upgrootte. Om de back-up te comprimeren, kunt u de MongoDBdump-uitvoer naar een compressietool pijpen en deze omleiden naar een doelbestand

Als je een gecomprimeerde back-up hebt, kun je tot 50% van de oorspronkelijke back-upgrootte besparen, afhankelijk van de dataset.

mongodump --db country --gzip --archive=country.archive

Netwerkdoorvoer beperken

Een geweldige optie voor back-ups in de cloud is om de bandbreedte voor netwerkstreaming (Mb/s) te beperken bij het maken van een back-up. U kunt dat bereiken met pv-tool. Het pv-hulpprogramma wordt geleverd met de optie voor gegevensmodificaties -L RATE, --rate-limit RATE die de overdracht beperken tot een maximum van RATE-bytes per seconde. Het onderstaande voorbeeld beperkt het tot 2 MB/s.

$ pv -q -L 2m

MongoDB-back-ups overzetten naar de cloud

Als uw back-up nu is gecomprimeerd en beveiligd (versleuteld), is deze klaar voor overdracht.

Google Cloud

De gsutil-opdrachtregeltool wordt gebruikt om uw opslagbuckets op Google Cloud Storage te beheren, controleren en gebruiken. Als je de gcloud-util al hebt geïnstalleerd, heb je de gsutil al geïnstalleerd. Volg anders de instructies voor uw Linux-distributie vanaf hier.

Om de gcloud CLI te installeren, kunt u de onderstaande procedure volgen:

curl https://sdk.cloud.google.com | bash
Herstart je shell:
exec -l $SHELL
Voer gcloud init uit om de gcloud-omgeving te initialiseren:
gcloud init
Met de gsutil-opdrachtregeltool geïnstalleerd en geverifieerd, maakt u een regionale opslagbucket met de naam MongoDB-backups-storage in uw huidige project.
gsutil mb -c regional -l europe-west1 gs://severalnines-storage/

Creating gs://MongoDB-backups-storage/

Amazon S3

Als u geen RDS gebruikt om uw databases te hosten, is het zeer waarschijnlijk dat u uw eigen back-ups maakt. Amazon's AWS-platform, S3 (Amazon Simple Storage Service) is een gegevensopslagservice die kan worden gebruikt om databaseback-ups of andere bedrijfskritieke bestanden op te slaan. Of het nu een Amazon EC2-instantie is of uw lokale omgeving, u kunt de service gebruiken om uw gegevens te beveiligen.

Terwijl back-ups kunnen worden geüpload via de webinterface, kan de speciale s3-opdrachtregelinterface worden gebruikt om dit te doen vanaf de opdrachtregel en via back-upautomatiseringsscripts. Als back-ups heel lang moeten worden bewaard en de hersteltijd geen probleem is, kunnen back-ups worden overgebracht naar de Amazon Glacier-service, wat een veel goedkopere langetermijnopslag oplevert. Bestanden (amazon-objecten) worden logisch opgeslagen in een enorme platte container met de naam bucket. S3 presenteert een REST-interface aan zijn internals. U kunt deze API gebruiken om CRUD-bewerkingen op buckets en objecten uit te voeren en om machtigingen en configuraties voor beide te wijzigen.

De primaire distributiemethode voor de AWS CLI op Linux, Windows en macOS is pip, een pakketbeheerder voor Python. Instructies vindt u hier.

aws s3 cp severalnines.sql s3://severalnine-sbucket/MongoDB_backups
Standaard biedt S3 elf 9s-objectduurzaamheid. Het betekent dat als je er 1.000.000.000 (1 miljard) objecten in opslaat, je kunt verwachten dat je gemiddeld elke 10 jaar 1 object verliest. De manier waarop S3 dat indrukwekkende aantal 9s bereikt, is door het object automatisch te repliceren in meerdere beschikbaarheidszones, waarover we in een ander bericht zullen praten. Amazon heeft regionale datacenters over de hele wereld.

Microsoft Azure Storage

Microsoft's openbare cloudplatform, Azure, heeft opslagopties met zijn besturingslijninterface. Informatie is hier te vinden. De open-source, platformonafhankelijke Azure CLI biedt een set opdrachten voor het werken met het Azure-platform. Het biedt veel van de functionaliteit van de Azure-portal, inclusief uitgebreide gegevenstoegang.

De installatie van Azure CLI is vrij eenvoudig, instructies vind je hier. Hieronder vindt u hoe u uw back-up kunt overbrengen naar Microsoft-opslag.

az storage blob upload --container-name severalnines --file severalnines.gz.tar --name severalnines_backup

Hybride opslag voor MongoDB-back-ups

Met de groeiende publieke en private cloudopslagindustrie hebben we een nieuwe categorie genaamd hybride opslag. De typische benadering is om gegevens op lokale schijfstations voor een kortere periode te bewaren, terwijl back-upopslag in de cloud voor een langere tijd wordt bewaard. Vaak komt de vereiste voor een langere bewaartermijn van back-ups voort uit wettelijke verplichtingen voor verschillende industrieën (zoals telecom die metadata van verbindingen moet opslaan). Met deze technologie kunnen de bestanden lokaal worden opgeslagen, waarbij wijzigingen automatisch worden gesynchroniseerd met externe in de cloud. Een dergelijke benadering komt voort uit de behoefte om recente back-ups lokaal te hebben opgeslagen voor snel herstel (lagere RTO), evenals doelstellingen voor bedrijfscontinuïteit.

Het belangrijkste aspect van efficiënt gebruik van bronnen is om aparte back-upretenties te hebben. Gegevens die lokaal op redundante schijven worden opgeslagen, worden voor een kortere periode bewaard, terwijl back-upopslag in de cloud langer wordt bewaard. Vaak komt de vereiste voor een langere bewaring van back-ups voort uit wettelijke verplichtingen voor verschillende industrieën (zoals telecom die metadata van verbindingen moet opslaan).

Cloudproviders zoals Google Cloud Services, Microsoft Azure en Amazon S3 bieden elk vrijwel onbeperkte opslag, waardoor er minder lokale ruimte nodig is. Hiermee kunt u uw back-upbestanden langer bewaren, zo lang als u wilt en hoeft u zich geen zorgen te maken over de lokale schijfruimte.

ClusterControl back-upbeheer - hybride opslag

Bij het plannen van een back-up met ClusterControl, kan elk van de back-upmethoden worden geconfigureerd met een set opties voor hoe u wilt dat de back-up wordt uitgevoerd. Het belangrijkste voor de hybride cloudopslag zou zijn:

  • Netwerkbeperking
  • Encryptie met het ingebouwde sleutelbeheer
  • Compressie
  • De bewaarperiode voor de lokale back-ups
  • De bewaarperiode voor de cloudback-ups

ClusterControl geavanceerde back-upfuncties voor cloud, parallelle compressie, netwerkbandbreedtelimiet, encryptie , enz. Uw bedrijf kan profiteren van cloudschaalbaarheid en pay-as-you-go-prijzen voor groeiende opslagbehoeften. U kunt een back-upstrategie ontwerpen om zowel lokale kopieën in het datacenter te bieden voor onmiddellijk herstel, als een naadloze toegangspoort tot cloudopslagservices van AWS, Google en Azure.

Geavanceerde TLS en AES 256 -bit encryptie- en compressiefuncties ondersteunen veilige back-ups die aanzienlijk minder ruimte innemen in de cloud.


  1. Redis als database

  2. Redis schrijft naar .ssh/authorized_keys

  3. hoe string naar numerieke waarden in mongodb te converteren

  4. Aan de slag met Python en MongoDB