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.
- Mongodump
- 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.