Databaseback-up is niets anders dan een manier om gegevens te beschermen of te herstellen. Het is het proces van het opslaan van de operationele status, architectuur en gegevens van uw database. Het kan erg handig zijn in situaties van technische storing of calamiteiten. Het is dus essentieel om de back-up van uw database te bewaren en dat uw database een goed en gemakkelijk back-upproces heeft.
MongoDB biedt verschillende tools/technieken om gemakkelijk een back-up van uw databases te maken.
In dit artikel bespreken we enkele van de beste MongoDB-workflows voor back-up en herstel.
Over het algemeen zijn er drie meest voorkomende opties om een back-up te maken van uw MongoDB-server/cluster.
- Mongodump/Mongorestore
- MongoDB Cloud Manager
- Snapshots database
Naast deze algemene opties zijn er nog andere manieren om een back-up van uw MongoDB te maken. Ook al deze opties bespreken we in dit artikel. Laten we beginnen.
MongoDump/MongoRestore
Als je een kleine database hebt (<100GB) en je wilt volledige controle over je back-ups, dan zijn Mongodump en Mongorestore je beste opties. Dit zijn mongo-shell-commando's die kunnen worden gebruikt om handmatig een back-up van uw database of verzamelingen te maken. Mongodump dumpt alle gegevens in binaire JSON(BSON)-indeling naar de opgegeven locatie. Mongorestore kan deze BSON-bestanden gebruiken om uw database te herstellen.
Maak een back-up van een hele database
$ sudo mongodump --db mydb --out /var/backups/mongo
Uitgang:
2018-08-20T10:11:57.685-0500 writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500 writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500 done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500 writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson
In deze opdracht is het belangrijkste argument --db. Het specificeert de naam van de database waarvan u een back-up wilt maken. Als u dit argument niet opgeeft, maakt het Mongodump-commando een back-up van al uw databases, wat een zeer intensief proces kan zijn.
Back-up van één verzameling
$ mongodump -d mydb -o /var/backups/mongo --collection users
Met deze opdracht wordt alleen een back-up gemaakt van de gebruikersverzameling in de mydb-database. Als u deze optie niet geeft, wordt standaard een back-up van alle collecties in de database gemaakt.
Regelmatige back-ups maken met Mongodump/Mongorestore
Als standaardpraktijk zou u regelmatig back-ups moeten maken van uw MongoDB-database. Stel dat je elke dag om 03:03 een back-up wilt maken, dan kun je dit in een Linux-systeem doen door een cron-item toe te voegen in crontab.
$ sudo crontab -e
Voeg deze regel toe in crontab:
3 3 * * * mongodump --out /var/backups/mongo
Herstel een hele database
Voor het herstellen van de database kunnen we de Mongorestore-opdracht gebruiken met de optie --db. Het leest de BSON-bestanden die door Mongodump zijn gemaakt en herstelt uw database.
$ sudo mongorestore --db mydb /var/backups/mongo/mydb
Uitgang
2018-07-20T12:44:30.876-0500 building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500 reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500 restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500 restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500 finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500 done
Herstel een hele verzameling
Om slechts één verzameling van db te herstellen, kunt u de volgende opdracht gebruiken:
$ mongorestore -d mydb -c users mydb/users.bson
Als er een back-up van uw verzameling is gemaakt in JSON-indeling in plaats van BSON, kunt u de volgende opdracht gebruiken:
$ mongoimport --db mydb --collection users --file users.json --jsonArray
Voordelen
- Zeer eenvoudig te gebruiken
- Je hebt volledige toegang tot je back-up
- U kunt uw back-ups op elke locatie plaatsen, zoals NFS-shares, AWS S3 enz.
Nadelen
- Elke keer is er een volledige back-up van de database nodig, niet alleen het verschil.
- Voor grote databases kan het uren duren om de database te back-uppen en te herstellen.
- Het is standaard geen point-in-time, wat betekent dat als uw gegevens veranderen tijdens het maken van een back-up, uw back-up kan leiden tot inconsistentie. U kunt de optie --oplog gebruiken om dit probleem op te lossen. Er wordt een momentopname van de database gemaakt aan het einde van het mongodump-proces.
MongoDB Ops Manager
Ops Manager is een beheerapplicatie voor MongoDB die in uw datacenter draait. Het maakt continu back-ups van uw gegevens en biedt herstelprocessen op een bepaald tijdstip voor uw database. Binnen deze applicatie is er een agent die verbinding maakt met uw MongoDB-instanties. Het zal eerst een eerste synchronisatie uitvoeren om een back-up te maken van de huidige staat van de database. De agent blijft de gecomprimeerde en versleutelde oplog-gegevens naar Ops Manager sturen, zodat u een continue back-up kunt hebben. Met behulp van deze gegevens maakt Ops Manager database-snapshots. Het maakt elke 6 uur een momentopname van uw database en de oploggegevens worden 24 uur bewaard. U kunt het snapshot-schema op elk moment configureren met behulp van de Ops Manager.
Voordelen
- Het is standaard point-in-time
- Geen invloed op de productieprestaties, behalve de initiële synchronisatie
- Ondersteuning voor consistente snapshots van shard-clusters
- Flexibiliteit om niet-kritieke collecties uit te sluiten
Nadelen
- De netwerklatentie neemt toe met de grootte van de momentopname tijdens het herstellen van de database.
MongoDB Cloud Manager
MongoDB Cloud Manager is een cloudgebaseerde back-upoplossing die point-in-time herstel, continue en online back-upoplossing biedt als een volledig beheerde service. U kunt eenvoudig de Cloud Manager-agent installeren om back-up en herstel van uw database te beheren. Het slaat uw back-upgegevens op in de MongoDB-cloud.
Voordelen
- Zeer eenvoudig te gebruiken. Goede GUI.
- Continue back-up van queries en oplog.
Nadelen
- Geen controle over back-upgegevens. Het wordt opgeslagen in de MongoDB-cloud.
- De kosten zijn afhankelijk van de grootte van de gegevens en de hoeveelheid oplogwijzigingen.
- Herstelproces is traag.
Momentopname-databasebestanden
Dit is de eenvoudigste oplossing om een back-up van uw database te maken. U kunt alle onderliggende bestanden (inhoud van data/directory) kopiëren en op een veilige locatie plaatsen. Voordat u alle bestanden kopieert, moet u alle lopende schrijfbewerkingen naar een database stoppen om de gegevensconsistentie te waarborgen. U kunt de opdracht db.fsyncLock() gebruiken om alle schrijfbewerkingen te stoppen.
Er zijn twee soorten snapshots:de ene is snapshots op cloudniveau en de andere is snapshots op OS-niveau.
Als u databasegegevens opslaat bij een cloudserviceprovider zoals AWS, moet u AWS EBS-snapshots maken voor back-up. Als u daarentegen DB-bestanden opslaat in het oorspronkelijke besturingssysteem zoals Linux, moet u LVM-snapshots maken. LVM-snapshots zijn niet overdraagbaar naar andere machines. Dus snapshots op cloudbases zijn beter dan snapshots op basis van het besturingssysteem.
Voordelen
- Eenvoudig te gebruiken.
- Volledige controle over snapshots. U kunt het naar elk datacenter verplaatsen.
- Deze snapshots zijn verschillende snapshots waarin alleen de verschillen met eerdere snapshots zijn opgeslagen.
- Het is niet nodig om de snapshots te downloaden om uw database te herstellen. U kunt gewoon een nieuw volume maken van uw momentopname.
Nadelen
- Met deze methode kun je je database alleen herstellen op break-up punten.
- Onderhoud wordt soms erg complex.
- Om back-ups van alle replicasets (in shard-systeem) te coördineren, heb je een speciaal devops-team nodig.
MongoDB Consistente back-uptool
MongoDB consistente back-up is een hulpmiddel voor het uitvoeren van consistente back-ups van MongoDB-clusters. Het kan een back-up maken van een cluster met een of meerdere shards naar een enkel punt van de database. Het gebruikt Mongodump als een standaard back-upmethode. Voer de volgende opdracht uit om een back-up te maken met deze tool.
$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo
Alle back-ups die door deze opdrachten worden gegenereerd, zijn compatibel met MongoRestore. U kunt de mongorestore-opdracht gebruiken met de optie --oplogReplay om consistentie te garanderen.
$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump
Voordelen
- Volledig open source
- Werkt met shard-cluster
- Biedt een optie voor externe back-up zoals Amazon S3
- Automatisch schalen beschikbaar
- Zeer eenvoudig te installeren en uit te voeren
Nadeel
- Niet volledig volwassen product
- Heel weinig opties voor uploaden op afstand
- Ondersteunt geen gegevenscodering vóór het opslaan op schijf
- De officiële coderepository is niet goed getest
ClusterControl-back-up
ClusterControl is een alles-in-één geautomatiseerd databasebeheersysteem. Hiermee kunt u uw databaseclusters eenvoudig bewaken, implementeren, beheren en schalen. Het ondersteunt MySQL, MongoDB, PostgreSQL, Percona XtraDB en Galera Cluster. Deze software automatiseert bijna alle databasebewerkingen, zoals het implementeren van een cluster, het toevoegen of verwijderen van een knooppunt van een cluster, continue back-ups, het schalen van het cluster enz. Al deze dingen kunt u doen vanuit één enkele GUI die wordt geleverd door het ClusterControl-systeem.
ClusterControl biedt een zeer mooie GUI voor MongoDB-back-upbeheer met ondersteuning voor planning en creatieve rapporten. Het geeft je twee opties voor back-upmethoden.
- Mongodump
- Mongodb consistente back-up
Gebruikers kunnen dus elke optie kiezen op basis van hun behoeften. Deze tool wijst een unieke ID toe aan alle back-ups en slaat deze op onder dit pad:ClusterControl> Instellingen> Back-up> BackupID. Als het opgegeven knooppunt niet live is tijdens het maken van de back-up, zal het hulpprogramma automatisch het live-knooppunt van het cluster vinden en het back-upproces op dat knooppunt voortzetten. Deze tool biedt ook een optie voor het plannen van de back-ups met behulp van een van de bovenstaande back-upmethoden. U kunt elke planningstaak in-/uitschakelen door gewoon op een knop te drukken. ClusterControl voert het back-upproces op de achtergrond uit, zodat het geen invloed heeft op de andere taken in de wachtrij.
Voordelen
- Eenvoudige installatie en zeer eenvoudig te gebruiken
- Meerdere opties voor back-upmethoden
- Back-up plannen is heel eenvoudig met behulp van een eenvoudig GUI-formulier
- Geautomatiseerde back-upverificatie
- Back-uprapporten met status
Nadeel
- Beide back-upmethoden gebruiken intern mongodump, wat problemen heeft met het omgaan met zeer grote databases.
Conclusie
Een goede back-upstrategie is een essentieel onderdeel van elk databasebeheersysteem. MongoDB biedt veel opties voor back-ups en herstel/herstel. Naast een goede back-upmethode is het erg belangrijk om meerdere replica's van de database te hebben. Dit helpt om de database te herstellen zonder de downtime van zelfs maar één seconde. Soms kan het back-upproces voor grotere databases erg veel middelen kosten. Uw server moet dus zijn uitgerust met een goede CPU, RAM en meer schijfruimte om dit soort belasting aan te kunnen. Het back-upproces kan om deze redenen de belasting van de server verhogen, dus u moet het back-upproces 's nachts of tijdens de daluren uitvoeren.