sql >> Database teknologi >  >> NoSQL >> MongoDB

En gennemgang af MongoDB Backup Options

Database backup er intet andet end en måde at beskytte eller gendanne data på. Det er processen med at gemme din databases driftstilstand, arkitektur og data. Det kan være meget nyttigt i situationer med teknisk udfald eller katastrofe. Så det er vigtigt at beholde backup af din database, og at din database har en god og nem proces til backup.

MongoDB tilbyder flere værktøjer/teknikker til nemt at sikkerhedskopiere dine databaser.

I denne artikel vil vi diskutere nogle af de bedste MongoDB backup- og gendannelsesarbejdsgange.

Generelt er der tre mest almindelige muligheder for at sikkerhedskopiere din MongoDB-server/-klynge.

  • Mongodump/Mongorestore
  • MongoDB Cloud Manager
  • Snapshots af databasen

Bortset fra disse generelle muligheder er der andre måder at sikkerhedskopiere din MongoDB på. Vi vil også diskutere alle disse muligheder i denne artikel. Lad os komme i gang.

MongoDump/MongoRestore

Hvis du har en lille database (<100GB), og du vil have fuld kontrol over dine sikkerhedskopier, så er Mongodump og Mongorestore dine bedste muligheder. Disse er mongo shell-kommandoer, som kan bruges til manuelt at sikkerhedskopiere din database eller samlinger. Mongodump dumper alle data i binært JSON(BSON)-format til den angivne placering. Mongorestore kan bruge disse BSON-filer til at gendanne din database.

Sikkerhedskopier en hel database

$ sudo mongodump --db mydb --out /var/backups/mongo

Output:

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

I denne kommando er det vigtigste argument --db. Den specificerer navnet på den database, du vil sikkerhedskopiere. Hvis du ikke angiver dette argument, vil Mongodump-kommandoen sikkerhedskopiere alle dine databaser, hvilket kan være en meget intensiv proces.

Sikkerhedskopier en enkelt samling

$ mongodump -d mydb -o /var/backups/mongo --collection users

Denne kommando vil kun sikkerhedskopiere brugernes samling i mydb-databasen. Hvis du ikke giver denne mulighed, vil den som standard sikkerhedskopiere hele samlingen i databasen.

Tag regelmæssige sikkerhedskopier ved hjælp af Mongodump/Mongorestore

Som en standardpraksis bør du lave regelmæssige sikkerhedskopier af din MongoDB-database. Antag, at du vil tage en sikkerhedskopi hver dag kl. 03:03, så i et Linux-system kan du gøre dette ved at tilføje en cron-indgang i crontab.

$ sudo crontab -e

Tilføj denne linje i crontab:

3 3 * * * mongodump --out /var/backups/mongo

Gendan en hel database

For at gendanne databasen kan vi bruge Mongorestore-kommandoen med --db mulighed. Det vil læse BSON-filerne oprettet af Mongodump og gendanner din database.

$ sudo mongorestore --db mydb /var/backups/mongo/mydb

Output

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

Gendan en hel samling

For at gendanne kun en enkelt samling fra db, kan du bruge følgende kommando:

$ mongorestore -d mydb -c users mydb/users.bson

Hvis din samling er sikkerhedskopieret i JSON-format i stedet for BSON, kan du bruge følgende kommando:

$ mongoimport --db mydb --collection users --file users.json --jsonArray

Fordele

  • Meget nem at bruge
  • Du har fuld adgang til din backup
  • Du kan placere dine sikkerhedskopier hvor som helst, såsom NFS-shares, AWS S3 osv.

Ulempe

  • Hver gang vil det tage en fuld backup af databasen, ikke kun forskellen.
  • For store databaser kan det tage timer at sikkerhedskopiere og gendanne databasen.
  • Det er ikke et tidspunkt som standard, hvilket betyder, at hvis dine data ændres, mens du sikkerhedskopierer dem, kan din sikkerhedskopiering resultere i inkonsekvens. Du kan bruge --oplog mulighed for at løse dette problem. Det vil tage et øjebliksbillede af databasen i slutningen af ​​mongodump-processen.

MongoDB Ops Manager

Ops Manager er en administrationsapplikation til MongoDB, som kører i dit datacenter. Det sikkerhedskopierer løbende dine data og giver gendannelsesprocesser på tidspunktet for din database. I denne applikation er der en agent, som forbinder til dine MongoDB-instanser. Det vil først udføre en indledende synkronisering for at sikkerhedskopiere databasens aktuelle tilstand. Agenten vil blive ved med at sende de komprimerede og krypterede oplog-data til Ops Manager, så du kan have en kontinuerlig backup. Ved at bruge disse data vil Ops Manager oprette database-øjebliksbilleder. Det vil skabe et øjebliksbillede af din database hver 6. time, og oplog-data vil blive gemt i 24 timer. Du kan konfigurere tidsplanen for øjebliksbilleder når som helst ved hjælp af Ops Manager.

Fordele

  • Det er som standard tidspunktet
  • Påvirker ikke produktionsydelsen undtagen for den indledende synkronisering
  • Understøttelse af ensartede snapshots af sharded klynger
  • Fleksibilitet til at ekskludere ikke-kritiske samlinger

Ulempe

  • Netværksforsinkelse øges med snapshotstørrelsen, mens databasen gendannes.

MongoDB Cloud Manager

MongoDB Cloud Manager er en cloud-baseret backup-løsning, der giver punkt-i-tid gendannelse, kontinuerlig og online backup-løsning som en fuldt administreret service. Du kan blot installere Cloud Manager-agenten for at administrere backup og gendannelse af din database. Det vil gemme dine backup-data i MongoDB-skyen.

Fordele

  • Meget enkel at bruge. God GUI.
  • Løbende sikkerhedskopiering af forespørgsler og oplog.

Ulempe

  • Ingen kontrol over sikkerhedskopierede data. Det er gemt i MongoDB-skyen.
  • Omkostningerne afhænger af størrelsen af ​​dataene og mængden af ​​oplog-ændringer.
  • Gendannelsesprocessen er langsom.

Snapshot-databasefiler

Dette er den enkleste løsning til backup af din database. Du kan kopiere alle de underliggende filer (indhold af data/mappe) og placere dem på en sikker placering. Før du kopierer alle filerne, bør du stoppe alle de igangværende skriveoperationer til en database for at sikre datakonsistensen. Du kan bruge kommandoen db.fsyncLock() til at stoppe alle skriveoperationer.

Der er to typer snapshots:en er snapshots på skyniveau og en anden er OS-niveau snapshots.

Hvis du gemmer databasedata hos en cloud-tjenesteudbyder som AWS, skal du tage AWS EBS-øjebliksbilleder til backup. I modsætning hertil, hvis du gemmer DB-filer i native OS som Linux, skal du tage LVM-snapshots. LVM-snapshots er ikke bærbare til andre maskiner. Så skybaserede snapshots er bedre end OS-baserede snapshots.

Fordele

  • Nem at bruge.
  • Fuld kontrol over snapshots. Du kan flytte det til ethvert datacenter.
  • Disse snapshots er forskellige snapshots, som kun gemmer forskellene fra tidligere snapshots.
  • Ingen grund til at downloade snapshots for at gendanne din database. Du kan bare oprette en ny volumen fra dit snapshot.

Ulempe

  • Ved at bruge denne metode kan du kun gendanne din database ved opbrudspunkter.
  • Vedligeholdelse bliver nogle gange meget kompleks.
  • For at koordinere sikkerhedskopier på tværs af alle replikasættene (i sharded system) har du brug for et særligt devops-team.

MongoDB Consistent Backup-værktøj

MongoDB konsekvent backup er et værktøj til at udføre konsistente sikkerhedskopier af MongoDB-klynger. Det kan sikkerhedskopiere en klynge med en eller mange shards til et enkelt punkt i databasen. Den bruger Mongodump som standard backup-metode. Kør følgende kommando for at tage backup med dette værktøj.

$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo

Alle sikkerhedskopier genereret af denne kommando er MongoRestore-kompatible. Du kan bruge mongorestore-kommando med --oplogReplay mulighed for at sikre konsistens.

$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump

Fordele

  • Fuldt åben kildekode
  • Fungerer med sharded cluster
  • Giver en mulighed for fjernsikkerhedskopiering såsom Amazon S3
  • Automatisk skalering tilgængelig
  • Meget let at installere og køre

Ulempe

  • Ikke helt modent produkt
  • Meget få muligheder for fjernoverførsel
  • Understøtter ikke datakryptering før lagring på disk
  • Det officielle kodelager mangler korrekt test

ClusterControl Backup

ClusterControl er et alt-i-et automatiseret databasestyringssystem. Det giver dig mulighed for nemt at overvåge, implementere, administrere og skalere dine databaseklynger. Det understøtter MySQL, MongoDB, PostgreSQL, Percona XtraDB og Galera Cluster. Denne software automatiserer næsten alle databaseoperationer som at implementere en klynge, tilføje eller fjerne en node fra enhver klynge, kontinuerlige sikkerhedskopier, skalering af klyngen osv. Alle disse ting kan du gøre fra en enkelt GUI leveret af ClusterControl-systemet.

ClusterControl giver en meget flot GUI til MongoDB backup management med understøttelse af planlægning og kreative rapporter. Det giver dig to muligheder for sikkerhedskopieringsmetoder.

  1. Mongodump
  2. Mongodb konsekvent backup

Så brugerne kan vælge enhver mulighed i henhold til deres behov. Dette værktøj tildeler et unikt ID til alle sikkerhedskopier og gemmer det under denne sti:ClusterControl> Indstillinger> Sikkerhedskopiering> BackupID. Hvis den angivne node ikke er live, mens du tager backup, vil værktøjet automatisk finde den live node fra klyngen og fortsætte backup-processen på den node. Dette værktøj giver også mulighed for at planlægge sikkerhedskopierne ved hjælp af en af ​​ovenstående sikkerhedskopieringsmetoder. Du kan aktivere/deaktivere ethvert planlægningsjob ved blot at skifte på en knap. ClusterControl kører backup-processen i baggrunden, så den ikke påvirker de andre job i køen.

Fordele

  • Nem installation og meget nem at bruge
  • Flere muligheder for sikkerhedskopieringsmetoder
  • Sikkerhedskopieringsplanlægning er meget let ved at bruge en simpel GUI-formular
  • Automatisk sikkerhedskopieringsbekræftelse
  • Sikkerhedskopier rapporter med status

Ulempe

  • Begge backupmetoder bruger internt mongodump, som har nogle problemer med at håndtere meget store databaser.

Konklusion

En god backup-strategi er en kritisk del af ethvert databasestyringssystem. MongoDB tilbyder mange muligheder for sikkerhedskopiering og gendannelse/gendannelse. Sammen med en god backup-metode er det meget vigtigt at have flere replikaer af databasen. Dette hjælper med at gendanne databasen uden nedetid på blot ét sekund. Nogle gange for større databaser kan sikkerhedskopieringsprocessen være meget ressourcekrævende. Så din server bør være udstyret med god CPU, RAM og mere diskplads til at håndtere denne form for belastning. Sikkerhedskopieringsprocessen kan øge belastningen på serveren på grund af disse årsager, så du bør køre backup-processen om nætterne eller uden for myldretiden.


  1. Sådan sender du ObjectId fra MongoDB i MVC.net

  2. Spark-on-HBase:DataFrame-baseret HBase-stik

  3. Har brug for hjælp til konceptualisering i Redis/NoSQL

  4. Hadoop Kort/Reducer vs indbygget Kort/Reducer